Помощь - Поиск - Пользователи - Календарь
Полная версия: рекурсия.
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
ducky
Во входном файле задана непустая последовательность положительных вещественных чисел, за которой следует отрицательное число. Описать рекурсивную функцию 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.
volvo
Файл, как я понимаю, текстовый? Тогда что-то вроде:

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;


Допиши программу сама. Осталось открыть файл, вызвать функцию, и закрыть файл... Но здесь подразумевается, что во входном файле обязательно есть отрицательное число. Если его не будет - будет сбой. Попробуй этого избежать...
ducky
mega_chok.gif mega_chok.gif
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. 
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.