Series40. Дано целое число $$K$$, а также $$K$$ наборов ненулевых целых чисел. Каждый набор содержит не менее трех элементов, признаком его завершенияявляется число 0. Для каждого набора выполнить следующее действие: если набор является пилообразным (см. задание Series23), то вывести количество его элементов; в противном случае вывести номер первого элемента, который не является зубцом.
Решение:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
program Series40; var K,Ki,A,A1,A2,Count:Integer; Check:Boolean; begin Write('K: '); Readln(K); for Ki:=1 to K do begin Write('A: '); Readln(A1); Write('A: '); Readln(A); Count:=1; Check:=True; repeat A2:=A1; A1:=A; Write('A: '); Readln(A); if Check then begin inc(Count); if not (((A2<A1) and (A1>A)) or ((A2>A1) and (A1<A))) and (A<>0) then Check:=False; end; until A=0; Writeln('---'); Writeln(Count); end; end. |
Другие задачи из раздела Series можно посмотреть здесь.
Строчку 25 изменить на Count:=count+1. Чуть глобальнее, предлагаю строки с 21 по 27 заменить на
Угу, вместо номера элемента выводил его значение.
Немного не нравится строчки, так как проверка будет происходить всё время. Поэтому поменял так:
Было:
Стало:
В отношении «незубцов» правильнее вместо строк 14, 15 :