ПОСЛЕДОВАТЕЛЬНОСТЬ НЕ МЕНЯЕТ ЗНАКА
Рис. 3.5. Результат работы PRG3_7 Задача 3.8 Вводится последовательность из п произвольных чисел. Определить, сколько раз последовательность меняет знак. Основная сложность в этой задаче - запомнить, какой знак был у числа перед появлением серии нулей. Ввод нуля не обязательно означает, что последовательность меняет знак. Например, при вводе 1 0 0 -2 последовательность меняет знак, а при 1 0 0 2 - нет. Для решения нужно ввести вспомогательный флаг F, с помощью которого можно запомнить знак числа перед серией нулей. PROGRAM PRG3_8; VAR OLD, NEW, F: REAL; K, I, N: INTEGER; BEGIN REPEAT WRITE('BBEДИTE ДЛИНУ ПОСЛЕДОВАТЕЛЬНОСТИ N = '); READLN (N); UNTIL N>0; WRITE('BBEДИTE X ='); READLN (OLD); F:= OLD; K= 0; FOR I:= 2 TO N DO BEGIN WRITE('BBEДИTE X ='); READLN (NEW); IF (NEW<>0) AND (F = 0) THEN F:= NEW; IF NEW*F<0 THEN BEGIN F:= NEW; К:= K+1 END; OLD:= NEW; END; IF K>0 THEN WRITELN('ПOCЛEДOBATEЛЬНОСТЬ МЕНЯЕТ ЗНАК ', К, 'РАЗ') ELSE WRITELN('ПOCЛEДOBATEЛЬHOCTЬ HE МЕНЯЕТ ЗНАКА') END.
Для решения задачи: - формируем тело программы и описываем переменные; - вводим длину последовательности, первое число OLD, задаем начальное значение счетчика К; - задаем значение знака числа OLD как F; - в цикле вводим число NEW; - сравниваем знаки NEW и F; если они не равны, то значение счетчика увеличивается на единицу и знак F изменяется на противоположный; - если считывается число, равное нулю, то знак F не изменяется; - перепрнсваиваем значение OLD:= NEW и вводим новое - NEW; - в зависимости от счетчика К выводим результат. Переменные: OLD - предыдущее число; NEW - рассматриваемое число; К - счетчик; F - вспомогательная переменная; I - переменная цикла; N - длина последовательности. ВВЕДИТЕ ДЛИНУ ПОСЛЕДОВАТЕЛЬНОСТИ N = 7 ВВЕДИТЕ X = -4 ВВЕДИТЕ X = 0 ВВЕДИТЕ X = 0 ВВЕДИТЕ X = -4 ВВЕДИТЕ X = -4 ВВЕДИТЕ X = 4 ВВЕДИТЕ X = 0
|