Функции и обработка исключительных ситуаций - PascalABC.NET
Формулировка задачи:
Здравствуйте.Мне задали написать программу с использованием функции на языке Pascal.
Мне задано вычислить функцию
Но,главное то что нужно предвидеть возможные ошибки.Например если в знаменателе будет 0(ноль),то понятно что на него нельзя делить и нужно вывести сообщение типа "Ошибка!Введите другие данные".
При написании программы,возникла проблема в том что нужно выводить ошибку и просить ввести еще раз данные,а моя программа выводит ошибку и дальше вычисляет функцию.
Исправьте программу пожалуйста,при возможности указать какие ошибки еще можно обработать.Код ниже:
Решение задачи: «Функции и обработка исключительных ситуаций»
textual
Листинг программы
const
eps = 1e-8;
function err(x, a : Real; var res : Real) : Boolean;
begin
Result := False; // Предположим, что данные ошибочны
res := sin(a + x);
if abs(res) < eps then begin WriteLn('sin(a + x) = 0'); exit; end;
res := a - exp(a*x / res);
Result := True; // Отработали до конца = гуд!
end;
begin
var x := ReadLnReal('x =');
var a := ReadLnReal('a =');
var res : Real;
if err(x, a, res) then
WriteLn('y = ', res:0:8)
else
WriteLn('Вычисление прервано. Введены данные не отвечающие ОДЗ.');
end.
Объяснение кода листинга программы
- Введенные данные проверяются на соответствие условию задачи.
- Если условие не выполняется, то выводится сообщение об ошибке и процесс вычисления прекращается.
- Вычисляется значение функции sin(a + x).
- Если значение функции sin(a + x) равно нулю, то выводится сообщение об этом и процесс вычисления прекращается.
- Вычисляется значение функции a - exp(a*x / res).
- Результат вычислений выводится на экран.