Вычисление с некоторой точностью - Pascal
Формулировка задачи:
Ребята, помогите, пожалуйста написать код программы (консоль). Задача:
Даны действительные числа X, E (E не = 0 и Е>0). Вычислить с точностью E:
Никогда не сталкивался с подобными задачами, и если я правильно понял, то решить её нужно через repeat-until?
Решение задачи: «Вычисление с некоторой точностью»
textual
Листинг программы
var
eps, x, s, p : real;
k : integer;
begin
write('eps = '); readln(eps);
write('x = '); readln(x);
s := 0; k := 1; p := sqr(x)/4;
while abs(p*(-1)/sqr(k+2)*sqr(x/2)) > eps do begin
p := p * (-1)/sqr(k+2)*sqr(x/2);
inc(k);
s := s + p;
end;
writeln('s = ',s:0:5,' ',k);
readln;
end.
Объяснение кода листинга программы
- Объявление переменных:
eps(тип real) - переменная для хранения точности вычисленийx(тип real) - переменная для хранения значения аргументаs(тип real) - переменная для хранения суммыp(тип real) - переменная для хранения промежуточного результатаk(тип integer) - переменная для хранения порядка вычислений в цикле
- Запрос значений переменных:
- Запрашивается ввод значения для
eps - Запрашивается ввод значения для
x
- Запрашивается ввод значения для
- Инициализация переменных:
sустанавливается в 0 (s := 0)kустанавливается в 1 (k := 1)pвычисляется как квадратx, деленный на 4 (p := sqr(x)/4)
- Цикл вычислений:
- В цикле, пока абсолютное значение ((p (-1) / sqr(k + 2) sqr(x / 2)) > eps)...
- p умножается на -1, делится на квадрат (k + 2) и умножается на квадрат (x / 2)
- Значение k увеличивается на 1 (inc(k))
- Значение s увеличивается на p
- В цикле, пока абсолютное значение ((p (-1) / sqr(k + 2) sqr(x / 2)) > eps)...
- Вывод результата:
- Выводится значение
sс точностью до 5 знаков после запятой и значениеk - Ожидается ввод пользователем для завершения программы (readln)
- Выводится значение