Помогите откорректировать программу - Паскаль. Структура программы как у меня.
Условие: Дан одномерный массив, состоящий из вещественных элементов. Найти сумму элементов массива, расположенных до последнего положительного элемента.
program k;
var a:array[1..100] of real;
i,n,p,v:integer;
s:real;
begin
assign (input,'input.txt');
assign (output,'output.txt');
reset (input);
rewrite (output);
readln(n);
for i:=1 to n do read (a[i]);
i:=1;
while (i>=0) and (a[i]<=0) do i:=i-1;
if i<0 then writeln(0)
else p:=i;
s:=0;
for i:=1 to p-1 do s:=s+a[i];
writeln(s:0:0);
close (input);
close (output);
end.
Answers & Comments
a:array[1..100] of real;
i,n,last:integer;
s:real;
input,output:text;
begin
assign (input,'input.txt');
assign (output,'output.txt');
reset (input);
rewrite (output);
readln(n);
for i:=1 to n do begin
read(input,a[i]);
if (a[i] >= 0) then last:=i;end;
for i:=1 to last-1 dos:=s+a[i];
write(output,s:5:3);
close (input);
close (output);
end.
i:=1;
нужно поменять на
i:=n; (раз уж вы начинаете считать с конца)
а строки
while (i>=0) and (a[i]<=0) do i:=i-1;
if i<0 then writeln(0)
на
while (i>0) and (a[i]<=0) do i:=i-1;
if i=0 then writeln(0) (поскольку нет 0-ого элемента массива, и может выдаваться ошибка)