Series23. Дано целое число $$N$$ ($$> 2$$) и набор из $$N$$ вещественных чисел. Набор называется пилообразным, если каждый его внутренний элемент либо больше, либо меньше обоих своих соседей (то есть является «зубцом»). Если данный набор является пилообразным, то вывести 0; в противном случае вывести номер первого элемента, не являющегося зубцом.
Решение:
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 |
program Series18; var i,N,Num,Num1,Num2,El :Integer; b:boolean; begin b:=TRUE; El:=0; Write('N:'); Readln(N); for i:=1 to N do begin write('Введите ',i,' элемент набора :'); Num2:=Num1; Num1:=Num; Readln(Num); if (not((Num2<Num1) and (Num1>Num)) and not((Num2>Num1) and (Num1<Num))) and (i>2) and b then begin El:=i-1; b:=FALSE; end; end; Writeln(El); end. |
Решение olegst1975 и Kirk:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
Program s23; Var n,i,k,z1,z2: integer; c1,c2: real; Begin k:=0; z1:=0; Write('N='); Readln(n); Write('Enter number #1: '); Readln(c2); For i:=2 to n do Begin Write('Enter number #',i,': '); Readln(c1); If c1<c2 then z2:=1 else z2:=-1; //1 - подъем, -1 - спуск; If (z1=z2) and (k=0) then k:=i-1; z1:=z2; c2:=c1; End; Writeln('Number of the end of regularity: ',k); End. |
Другие задачи из раздела Series можно посмотреть здесь.
Было:
Стало:
строка 19, опечатка
not((Num2>Num1) and (Num1<Num2))) and
меняем на
not((Num2>Num1) and (Num1<Num))) and
«…вывести номер первого элемента, не являющегося зубцом.» Строка 23
El:=Num1;
меняем на
El:=i-1;
На первый взгляд конструкция
if (not((Num2Num)) and not((Num2>Num1) and (Num12) and b then
выглядит пугающе))
Сделал соответствующие изменения.
Только не понял, почему El:=i-1; так как этот элемент является последним элементом предыдущего зубца.
Считав первых три элемента последовательности (i=3), определяем является ли зубцом именно второй, а не третий
Да, понял, у меня проблема с логикой… надо вывести элемент который не является зубцом, а я вывожу элемент из за которого тот элемент не является зубцом…
Как раз с логикой проблем нет. Внимательность. У меня проблема с ней. В задаче во втором(!!) предложении уже дано решение. Нет, я не дочитав, уже знаю как буду делать. Потом удивляюсь простоте чужих решений.
О нет… это слишком сложно 🙂
Лучший ответ. Можно также сделать и без досрочного выходаю
Добавил в шапку. Написал, как совместный. Надеюсь никого этим не обидел.
11 строка неправильное присвоение, должно быть так: