Вычислить приближенное значение бесконечной суммы

Вычислить приближенное значение бесконечной суммы(n стремится к бесконечности) с заданным общим членом 2 способами:с заданной точностью и для заданного числа членов ряда. Выбор способа реализовать с помощью оператора выбора.

code: #pascal
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.
Поделиться:

Похожие статьи: