Информатика, вопрос задал mikitadewew , 6 лет назад

pascal, как изменить код программы которая высчитывает сумму всех элементов, до последнего положительного элемента(написать нужно не через break)

вот код:

var n, p,i,k:integer;

m:array of real;

s:real;

begin

write('n');

readln(n);

setlength(m,n);

for i:=0 to n-1 do

m[i]:=random(21)-10;

for i:=0 to n-1 do

write(m[i]:8:2);

writeln;

for i:=n-1 downto 0 do

if m[i]>0 then

begin

k:=i;

break;

end;

for i:=0 to k do

s:=s+m[i];

writeln('Сумма элементов до последнего положительного элемента =', s);

Ответы на вопрос

Ответил p15
1

Ответ:

var n, p,i,k:integer;

m:array of real;

s:real;

begin

write('n');

readln(n);

setlength(m,n);

writeln;  

for i:=0 to n-1 do

begin

m[i]:=random(21)-10;

write(m[i]:8:2);

if m[i]>0 then k:=i;

end;

writeln;  

S:=0

for i:=0 to k do

s:=s+m[i];

writeln('Сумма элементов до последнего положительного элемента =', s);

Объяснение:

Оптимизируем

for i:=0 to n-1 do  

m[i]:=random(21)-10;  

for i:=0 to n-1 do  

write(m[i]:8:2);

Объединим и заставим сразу считать k

for i:=0 to n-1 do

begin

m[i]:=random(21)-10;

write(m[i]:8:2);

if m[i]>0 then k:=i;

end;

выкидываем

for i:=n-1 downto 0 do

if m[i]>0 then  

begin

k:=i;

break;

end;

И вот еще не помню уже, но не будет лишним сделать S=0, может конечно при описании оно и становится 0, но лишним не будет. Нас учили так.

Новые вопросы