Решение неравенства. Подскажите как исправить - Pascal ABC

Узнай цену своей работы

Формулировка задачи:

Разработать алгоритм и составить программу вычисления таблицы значений функции, заданной в виде разложения в ряд. Значение функции вычислять с точностью >0, т.е. вычисление суммы членов ряда необходимо прекратить, когда абсолютная величина очередного члена ряда разложения окажется меньше :  ак  <. При вычислении очередного члена целесообразно воспользоваться рекуррентным выражением: ак+1=скак; к= 0, 1, 3, ..., где ак - некоторый к-ый член ряда; ак+1 - следующий к+1-ый член ряда; ск - коэффициент, определяемый номером к. При составлении программы необходимо по возможности воспользоваться операторами организации циклов WHILE, REPEAT, FOR. Границы интервала вычислений функций a и b, величина шага изменения аргумента h и точность вычисления функции  задаются при вводе. На печать выводятся номер по порядку, значение аргумента, соответствующие ему, значение функции и номер члена ряда, на котором закончилось вычисление значение функции, в форме таблицы: ________________________ №|_Х__|__ f (x)_|_№ чл.р.| 1 |____|_______|________| 2 |____|_______|________| 3 |____|_______|________| ...|____|_______|________|

Решение задачи: «Решение неравенства. Подскажите как исправить»

textual
Листинг программы
var
    x, b, h, eps: Single;
    prec: Byte;
    k, count: Word;
    s, si, temp: Real;
    line: String;
begin
    WriteLn('Данная программа предназначена для вычисления таблицы значений');
    WriteLn('функции заданной в виде разложения в ряд.');
    Write('Введите границу интервала a=');
    ReadLn(x);
    repeat
        Write('Введите правую границу интервала b>', x:0:2, ' b=');
        ReadLn(b);
    until (b > x);
    repeat
        Write('Введите величину шага изменения аргумента h<', (b - x):0:2, ' h=');
        ReadLn(h);
    until (h < b - x);
    repeat
        Write('Введите точность вычисления функции e(0..1) e=');
        ReadLn(eps);
    until ((eps > 0) And (eps < 1));
    temp := eps;
    prec := 0;
    while (temp < 0.9999999) do
    begin
        Inc(prec);
        temp := temp * 10;
    end;
    line := '=================================';
    for k := 1 to 2 * prec do
        line := line + '=';
    WriteLn(line);
    WriteLn('|   # | ', 'X':(5 + prec), ' | ', 'F(x)':(5 + prec), ' | № чл.р. |');
    WriteLn(line);
    count := 0;
    repeat
        Inc(count);
        s := 0; si := x; k := 0;
        while (Abs(si) > eps) do
        begin
            s := s + si;
            Inc(k);
            si := si*Sqr(x)/2/k/(2*k + 1);
        end;
        WriteLn('| ', count:3, ' | ', x:5 + prec:prec, ' | ', s:5 + prec:prec, ' | ', k:7, ' |');       
        x := x + h;
    until (x > b);
    WriteLn(line);
end.

Объяснение кода листинга программы

  1. Объявлены переменные: x, b, h, eps, prec, k, count, s, si, temp, line.
  2. Ввод границ интервала a и b с помощью функции ReadLn.
  3. Ввод шага изменения аргумента h с помощью функции ReadLn.
  4. Ввод точности вычисления функции e(0..1) с помощью функции ReadLn.
  5. Инициализация переменной temp и запуск цикла while для установки точности вычисления функции e(0..1).
  6. Цикл while для вывода таблицы значений функции F(x).
  7. Инициализация переменной count и запуск цикла repeat для вычисления значений функции F(x).
  8. Вычисление значения функции F(x) с помощью формулы разложения в ряд.
  9. Вывод значений переменных count, x, s и k на экран.
  10. Увеличение значения x на шаг h и проверка условия выхода из цикла repeat.
  11. Завершение работы программы и вывод на экран дополнительной информации.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 4.556 из 5
Похожие ответы