Const N = 30; Var Days:array[1..N] of boolean; B,A,i:integer; Begin B:=random(15,100); A:=random(60,100); WriteLn('Высота дерева: ',B/10,' м'); WriteLn('Высота подъёма улитки: ',A,' см'); Write('Погода: '); For i:= 1 to N do Begin if random(2) = 1 then Days[i]:=true else Days[i]:=false; if Days[i] then Write('солнечно ') else Write('пасмурно ') End; WriteLn;
For i:= 1 to N do Begin if Days[i] then Begin if A+3<=B then A:=A+3 else A:=B; End else Begin if A-2>=0 then A:=A-2 else A:=0; End End; Write('Высота поъёма улитки: ',A/10,' м') End.
На этот раз вроде бы и не торопился, все просмотрел (но наверняка, как всегда что-нибудь просмотрел)))), и кажется мне, что "школьное" решение уважаемого Эникея не удовлетворяет поставленной задаче (боюсь, что опять придется извиняться, но все же рискну). Из массива не удалены все отрицательные элементы. Их не видно, потому что распечатывается не весь массив. На первом скане видно, что при вводе массива (-1,-2,3,4,-5) элементы 4 и -5 остались на своих местах, просто они не выводятся на печать. Вот поэтому я считаю, что это решение некорректно, поставленная задача не выполнена. Свой вариант решения привожу на втором скане.
N = 30;
Var
Days:array[1..N] of boolean;
B,A,i:integer;
Begin
B:=random(15,100);
A:=random(60,100);
WriteLn('Высота дерева: ',B/10,' м');
WriteLn('Высота подъёма улитки: ',A,' см');
Write('Погода: ');
For i:= 1 to N do
Begin
if random(2) = 1 then Days[i]:=true
else Days[i]:=false;
if Days[i] then Write('солнечно ')
else Write('пасмурно ')
End;
WriteLn;
For i:= 1 to N do
Begin
if Days[i] then
Begin
if A+3<=B then A:=A+3
else A:=B;
End
else
Begin
if A-2>=0 then A:=A-2
else A:=0;
End
End;
Write('Высота поъёма улитки: ',A/10,' м')
End.