Решаем задачи Абрамян на Паскале. Series38

Series38. Дано целое число $$K$$, а также $$K$$ наборов ненулевых целых чисел. Каждый набор содержит не менее двух элементов, признаком его завершения является число 0. Для каждого набора выполнить следующее действие: если элементы набора возрастают, то вывести 1; если элементы набора убывают, то вывести –1; если элементы набора не возрастают и не убывают, то вывести 0.

3 решения результат 1 и -1 выводится, только если последовательность строго монотонна::

Решение olegst1975:

Решение:

Решение, выводится результат 1 и -1, если последовательность монотонна, если все элементы последовательности равны выводится 0:

Другие задачи из раздела Series можно посмотреть здесь.

Комментарии:

Комментарии 9

  • Это решение предыдущей задачи.

  • Было:

    Стало:

    • избавился от

      Добавив не строгие неравенства.

  • Как результат просят вывести числа поэтому переменные CheckUP и CheckDown используем числовые

    Ура, с Series больше надоедать не буду

    • Не понравилось, что используется две целочисленные переменные вместо двух булевых…
      Попытался сократить хотя бы до одной целочисленной переменной, но получилось ещё запутанней.

    • А по поводу:
      > Ура, с Series больше надоедать не буду
      Для меня это грустняшка… я счастлив когда мне пишут комментарии…

    • Можно так:
      var k:Integer;
      begin
      write(‘Количество наборов чисел k= ‘);
      read(k);
      write(‘Введите ‘,k,’ наборов чисел : ‘); //наборы разделяет 0
      for var i:=1 to k do
      begin
      var a:=ReadSeqIntegerWhile(x->x0).ToArray;
      var h:= a.SequenceEqual(a.Sorted);
      var d:= a.SequenceEqual(a.SortedDescending);
      If (a.Count>=2)and h and not d
      then writeln(‘Набор ‘,i,’: 1′) else
      If (a.Count>=2)and d and not h
      then writeln(‘Набор ‘,i,’: -1′) else
      If (a.Count>=2)and h and d or not(h or d)
      then writeln(‘Набор ‘,i,’: 0′) else
      end;
      end.

    • Можно так:
      var k:Integer;
      begin
      write(‘Количество наборов чисел k= ‘);
      read(k);
      write(‘Введите ‘,k,’ наборов чисел : ‘); //наборы разделяет 0
      for var i:=1 to k do
      begin
      var a:=ReadSeqIntegerWhile(x->x0).ToArray;
      var h:= a.SequenceEqual(a.Sorted);
      var d:= a.SequenceEqual(a.SortedDescending);
      If (a.Count>=2)and h and not d
      then writeln(‘Набор ‘,i,’: 1′) else
      If (a.Count>=2)and d and not h
      then writeln(‘Набор ‘,i,’: -1′) else
      If (a.Count>=2)and h and d or not(h or d)
      then writeln(‘Набор ‘,i,’: 0′) else
      end;
      end.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *