Решение неравенства. Подскажите как исправить - 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.
Объяснение кода листинга программы
- Объявлены переменные: x, b, h, eps, prec, k, count, s, si, temp, line.
- Ввод границ интервала a и b с помощью функции ReadLn.
- Ввод шага изменения аргумента h с помощью функции ReadLn.
- Ввод точности вычисления функции e(0..1) с помощью функции ReadLn.
- Инициализация переменной temp и запуск цикла while для установки точности вычисления функции e(0..1).
- Цикл while для вывода таблицы значений функции F(x).
- Инициализация переменной count и запуск цикла repeat для вычисления значений функции F(x).
- Вычисление значения функции F(x) с помощью формулы разложения в ряд.
- Вывод значений переменных count, x, s и k на экран.
- Увеличение значения x на шаг h и проверка условия выхода из цикла repeat.
- Завершение работы программы и вывод на экран дополнительной информации.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д