program Summa;
uses Crt;
var
v: byte; { выбор метода решения }
accuracy: real; { 1 метод - точность }
number: byte; { 2 метод - число членов }
sum: real;
i: integer;
{ процедура выбора метода решения }
procedure start;
begin
writeln('>>> entering data ');
Write('Method:(1-accuracy; 2-number of member) : ');
{ вводим цифры или 1 или 2 - смотря каким
методом решать }
readLn(v);
case v of
{ решение с заданной точностью }
1:
begin
write(' accuracy( 0<a<=1 ) = ');
readLn(accuracy);
end;
{ решение с колличеством заданных членов }
2:
begin
write(' number of member = ');
readLn(number);
end;
end;
writeln('>>> entering data completed. Waiting...');
end;
{ формула }
function f(x: real): real;
begin
f := 1 / sqr(x);
end;
{ Первый метод решения }
procedure metod1;
begin
sum := 0;
i := 1;
{ продолжаем суммировать, пока
не превысим точность }
while f(i) > accuracy do
begin
sum := sum + f(i);
writeln(' ', i, '# ', f(i):6:2);
inc(i);
end;
writeln('---------------');
writeln(' sum = ', sum:6:2);
writeln('number = ', (i - 1):6);
end;
{ второй метод решения }
procedure metod2;
begin
sum := 0;
for i := 1 to number do
begin
sum := sum + f(i);
end;
writeln('---------------');
writeln(' sum = ', sum:6:2);
end;
begin
Clrscr; { очистка экрана }
start; { вызов процедуры выбора метода решения }
case v of
1:
metod1; { если выбран 1-й метод }
2:
metod2; { если 2-й }
end;
readLn;
end.