Вычислить приближенное значение бесконечной суммы(n стремится к бесконечности) с заданным общим членом 2 способами:с заданной точностью и для заданного числа членов ряда. Выбор способа реализовать с помощью оператора выбора — 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.

Leave a Comment

− 5 = 5