Функции и обработка исключительных ситуаций - PascalABC.NET

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

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

Здравствуйте.Мне задали написать программу с использованием функции на языке Pascal. Мне задано вычислить функцию Но,главное то что нужно предвидеть возможные ошибки.Например если в знаменателе будет 0(ноль),то понятно что на него нельзя делить и нужно вывести сообщение типа "Ошибка!Введите другие данные". При написании программы,возникла проблема в том что нужно выводить ошибку и просить ввести еще раз данные,а моя программа выводит ошибку и дальше вычисляет функцию. Исправьте программу пожалуйста,при возможности указать какие ошибки еще можно обработать.Код ниже:
Листинг программы
  1. Program Mazur_10;
  2. Uses CRT;
  3. Var x,a,y: real;
  4. function obrabotka_errors(x,a:real):real;
  5. var k,q,r:real;
  6. begin
  7. q:=a+x;
  8. r:=a*x;
  9. k := a - exp((-1)*((r)/(sin(q))));
  10. if (q=pi) or (q=0)
  11. then
  12. writeln('Ошибка!Пожайлуста введите другие данные')
  13. else
  14. if (r=0)
  15. then
  16. writeln('Ошибка!Пожайлуста введите другие данные')
  17. else
  18. obrabotka_errors:= k;
  19. end;
  20. Begin
  21. Clrscr;
  22. write('Введите число x-> ');
  23. readln(x);
  24. write('Введите число a-> ');
  25. readln(a);
  26. y:=obrabotka_errors(x,a);
  27. writeln('Y= ',y);
  28. End.

Решение задачи: «Функции и обработка исключительных ситуаций»

textual
Листинг программы
  1. const
  2.   eps = 1e-8;
  3.  
  4. function err(x, a : Real; var res : Real) : Boolean;
  5. begin
  6.   Result := False; // Предположим, что данные ошибочны
  7.   res := sin(a + x);
  8.   if abs(res) < eps then begin WriteLn('sin(a + x) = 0'); exit; end;
  9.   res := a - exp(a*x / res);
  10.   Result := True; // Отработали до конца = гуд!
  11. end;
  12.  
  13. begin
  14.   var x := ReadLnReal('x =');
  15.   var a := ReadLnReal('a =');
  16.   var res : Real;
  17.  
  18.   if err(x, a, res) then
  19.     WriteLn('y = ', res:0:8)
  20.   else
  21.     WriteLn('Вычисление прервано. Введены данные не отвечающие ОДЗ.');
  22. end.

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

  1. Введенные данные проверяются на соответствие условию задачи.
  2. Если условие не выполняется, то выводится сообщение об ошибке и процесс вычисления прекращается.
  3. Вычисляется значение функции sin(a + x).
  4. Если значение функции sin(a + x) равно нулю, то выводится сообщение об этом и процесс вычисления прекращается.
  5. Вычисляется значение функции a - exp(a*x / res).
  6. Результат вычислений выводится на экран.

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


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

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

10   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы