Во входном файле задана непустая последовательность положительных вещественных чисел, за которой следует отрицательное число. Описать рекурсивную функцию sum без параметров для нахождения суммы этих положительных чисел.
program V_12_11;
function sum:extended;
var num:extended;
begin
writeln ('vvedite chislo');
readln;
if num >=0 then begin
sum:=num+sum;
end;
end;
var res:extended;
s:string;
begin
repeat
writeln ('vvedite neskolko neotricatelnih chisel, zaversaja vvod kagdogo chisla klavishej 'Enter'');
writeln ('dlja zavershenija vvoda vvedite otricatelnoje chislo i nagmite 'Enter'');
res:=sum;
writeln ('summa neotricatelnih chisel sledujushich do otricatelnogo chisla: ');
writeln (res);
writeln ('povtorit - Enter. vihod - luboj simvol + Enter');
readln (s);
until s<>";
end.
Файл, как я понимаю, текстовый? Тогда что-то вроде:
var
f: text;
function sum: extended;
var num: extended;
begin
read(f, num);
if num < 0 then sum := 0.0
else
sum := num + sum;
end;
program V_12_11;
var f:text;
function sum:extended;
var num:extended;
begin
read (f, num);
if num<0 then sum:=0.0
else sum:=num+sum;
end;
const fn='data.txt';
n=5;
var res:extended;
i:integer;
s:string;
begin
assign (f, fn);
repeat
writeln ('soderzimoe fajla: ');
rewrite (f);
randomize;
for i:=1 to n do begin
res:=1+random(100)/10;
writeln (f, res);
if i>1 then write (',');
write (res:0:1);
end;
writeln (f, 0);
writeln (',',0);
reset (f);
res:=sum;
close (f);
writeln ('summa =', res:0:1);
writeln ('povtorit - Enter, vihod - luboj simvol+Enter');
readln (s);
until s<>";
end.