Функции и обработка исключительных ситуаций - PascalABC.NET
Формулировка задачи:
Здравствуйте.Мне задали написать программу с использованием функции на языке Pascal.
Мне задано вычислить функцию
Но,главное то что нужно предвидеть возможные ошибки.Например если в знаменателе будет 0(ноль),то понятно что на него нельзя делить и нужно вывести сообщение типа "Ошибка!Введите другие данные".
При написании программы,возникла проблема в том что нужно выводить ошибку и просить ввести еще раз данные,а моя программа выводит ошибку и дальше вычисляет функцию.
Исправьте программу пожалуйста,при возможности указать какие ошибки еще можно обработать.Код ниже:
Листинг программы
- Program Mazur_10;
- Uses CRT;
- Var x,a,y: real;
- function obrabotka_errors(x,a:real):real;
- var k,q,r:real;
- begin
- q:=a+x;
- r:=a*x;
- k := a - exp((-1)*((r)/(sin(q))));
- if (q=pi) or (q=0)
- then
- writeln('Ошибка!Пожайлуста введите другие данные')
- else
- if (r=0)
- then
- writeln('Ошибка!Пожайлуста введите другие данные')
- else
- obrabotka_errors:= k;
- end;
- Begin
- Clrscr;
- write('Введите число x-> ');
- readln(x);
- write('Введите число a-> ');
- readln(a);
- y:=obrabotka_errors(x,a);
- writeln('Y= ',y);
- End.
Решение задачи: «Функции и обработка исключительных ситуаций»
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).
- Результат вычислений выводится на экран.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д