Вычислить значение y=f(x,a) и обработать возможные исключения - Free Pascal
Формулировка задачи:
Для данного варианта составить алгоритм счисления значения y=f(x,a), и реализировать его в виде функции. Значения Х и а задаются пользователем, предвидеть обработку исключительных ситуаций.
Вот что сделал, помогите , пожалуйста
Листинг программы
- program prakt10;
- uses crt;
- var a,x,y,k,m:real;
- begin
- clrscr;
- writeln('Vvedite X ---> ');
- readln(x);
- writeln('Vvedite a ---> ');
- readln(a);
- k:=(sin(x+a)/cos(x+a));
- m:=sqr(exp(a*x)+sin(x+a));
- if (k=0) or (m=0)
- then writeln('Chislo Y = 0')
- else
- y:=exp(ln(k/m)*(1/3));;
- if (y<=0) then
- writeln('Vash Y <= 0 , vvedite novoe')
- else
- writeln('Otvet = ',y);
- readln;
- end.
Решение задачи: «Вычислить значение y=f(x,a) и обработать возможные исключения»
textual
Листинг программы
- program prakt10;
- uses crt;
- var a,x,y,k,m,n,z:real;
- begin
- clrscr;
- writeln('Vvedite X ---> ');
- readln(x);
- writeln('Vvedite a ---> ');
- readln(a);
- k:=sin(x+a);
- m:=cos(x+a);
- n:=exp(a*x);
- //если cos=0 или под корнем не положительное
- if (m=0)or(n+k<=0) then write('Значение не определено')
- else
- begin
- z:=k/m/(n+k);//значение под корнем третьей степени
- if z=0 then y:=0
- else if z>0 then y:=exp(ln(z)/3)
- else y:=-exp(ln(-z)/3);
- write('y=',y:0:2)
- end;
- readln
- end.
Объяснение кода листинга программы
- Заголовок программы: program prakt10;
- Используемые модули: uses crt;
- Объявленные переменные: var a,x,y,k,m,n,z:real;
- Очистка экрана: clrscr;
- Вывод сообщения и запрос на ввод значения x: writeln('Vvedite X ---> ');
- Ввод значения x: readln(x);
- Вывод сообщения и запрос на ввод значения a: writeln('Vvedite a ---> ');
- Ввод значения a: readln(a);
- Вычисление значения k: k:=sin(x+a);
- Вычисление значения m: m:=cos(x+a);
- Вычисление значения n: n:=exp(a*x);
- Проверка значения m и n на неположительность или равенство нулю: if (m=0)or(n+k<=0) then write('Значение не определено')
- Если условие в п.12 не выполняется, то вычисление значения z: z:=k/m/(n+k);
- Проверка значения z на равенство нулю: if z=0 then y:=0
- Если значение z больше или равно нулю, то вычисление значения y: else if z>0 then y:=exp(ln(z)/3)
- Если значение z меньше нуля, то вычисление значения y: else y:=-exp(ln(-z)/3);
- Вывод значения y с округлением до двух знаков после запятой: write('y=',y:0:2);
- Завершение работы программы: readln;
- Если значение y равно нулю, то выводится сообщение: Значение не определено.
- Конец списка.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д