Даны целые числа . имеются ли в последовательности: два идущих подряд нулевых члена; три идущих подряд отрицательных члена? алгоритм в виде блок-схемы и на алгоритмическом языке
В отличии от блок-схемы, в программе использовано формирование членов последовательности посредством генератора случайных чисел. Если нужен ввод с клавиатуры, достаточно удалить randomize и заменить строку t:=Random(19)-9; { случайное значение на [-9;9] } на Read(t);
var i,n,t,c0,cn:integer; NoEnd:boolean; begin Randomize; Write('Предельное количество членов последовательности: '); Read(n); c0:=0; cn:=0; i:=1; NoEnd:=True; Writeln('Члены последовательности'); while (i<=n) and NoEnd do begin t:=Random(19)-9; { случайное значение на [-9;9] } Write(t:3); if t=0 then begin if c0<2 then Inc(c0) end else begin if c0<>2 then c0:=0; if t<0 then begin if cn<3 then Inc(cn) end else if cn<>3 then cn:=0 end; NoEnd:=(c0<>2) or (cn<>3); Inc(i) end; Writeln; if c0>=2 then Writeln('В последовательности есть два нулевых члена подряд'); if cn>=3 then Writeln('В последовательности есть три отрицательных члена подряд') end.
Тестовое решение: Предельное количество членов последовательности: 200 Члены последовательности 3 -9 9 9 0 3 -4 -9 3 -3 8 -1 5 1 -6 -9 5 9 -1 5 -6 -2 -4 -5 -1 -8 7 1 1 -6 -3 2 -8 8 8 3 -2 -4 0 8 5 -1 6 -6 -2 5 4 6 9 3 9 -3 -7 -8 4 -5 5 5 1 -1 5 5 -1 -1 -9 -4 -3 7 2 0 3 0 0 В последовательности есть два нулевых члена подряд В последовательности есть три отрицательных члена подряд
Если нужен ввод с клавиатуры, достаточно удалить randomize и заменить
строку t:=Random(19)-9; { случайное значение на [-9;9] } на Read(t);
var
i,n,t,c0,cn:integer;
NoEnd:boolean;
begin
Randomize;
Write('Предельное количество членов последовательности: ');
Read(n);
c0:=0; cn:=0;
i:=1; NoEnd:=True;
Writeln('Члены последовательности');
while (i<=n) and NoEnd do begin
t:=Random(19)-9; { случайное значение на [-9;9] }
Write(t:3);
if t=0 then begin if c0<2 then Inc(c0) end
else begin
if c0<>2 then c0:=0;
if t<0 then begin if cn<3 then Inc(cn) end
else if cn<>3 then cn:=0
end;
NoEnd:=(c0<>2) or (cn<>3);
Inc(i)
end;
Writeln;
if c0>=2 then Writeln('В последовательности есть два нулевых члена подряд');
if cn>=3 then Writeln('В последовательности есть три отрицательных члена подряд')
end.
Тестовое решение:
Предельное количество членов последовательности: 200
Члены последовательности
3 -9 9 9 0 3 -4 -9 3 -3 8 -1 5 1 -6 -9 5 9 -1 5 -6 -2 -4 -5 -1 -8 7 1 1 -6 -3 2 -8 8 8 3 -2 -4 0 8 5 -1 6 -6 -2 5 4 6 9 3 9 -3 -7 -8 4 -5 5 5 1 -1 5 5 -1 -1 -9 -4 -3 7 2 0 3 0 0
В последовательности есть два нулевых члена подряд
В последовательности есть три отрицательных члена подряд
Блок-схема находится во вложении.