Добрый день! Помогите пожалуйста разобраться с примером, вот сама функция:
.
В Паскале у меня получилась она так:
Program funkciya;
Uses crt;
Var
y,a,b,x:real;
Begin
clrscr;
writeln ('vvedite a=');
readln (a);
writeln ('vvedite b=');
readln (b);
writeln ('vvedite x=');
readln (x);
y:=(sqr(cos(x*x*x))-(x/(sqrt(sqr(a))+(sqr(b)))))*arctan(x/sqrt(1-sqr(x)));
writeln ('y',y:7:2);
readkey;
End.
Но после того как я нажимаю Ctrl+F9 ввожу данные a,b,x, то Паскаль мне выдаёт ошибку: Error 207: Invalid floating point operation , ну если я меняю writeln ('y',y:7:2) на writeln (y) , то выдаёт: Error 200: Division by zero.

В Паскале у меня получилась она так:
Program funkciya;
Uses crt;
Var
y,a,b,x:real;
Begin
clrscr;
writeln ('vvedite a=');
readln (a);
writeln ('vvedite b=');
readln (b);
writeln ('vvedite x=');
readln (x);
y:=(sqr(cos(x*x*x))-(x/(sqrt(sqr(a))+(sqr(b)))))*arctan(x/sqrt(1-sqr(x)));
writeln ('y',y:7:2);
readkey;
End.
Но после того как я нажимаю Ctrl+F9 ввожу данные a,b,x, то Паскаль мне выдаёт ошибку: Error 207: Invalid floating point operation , ну если я меняю writeln ('y',y:7:2) на writeln (y) , то выдаёт: Error 200: Division by zero.
тут в чём смысл?
Не знаю на счёт остального, но из-за этого ошибку будет кидать. Корень из отрицательного (в программе нет проверок никаких, ни на ноль, ни на что)
y:=sqr(cos(x*x*x)) - (x/sqrt(sqr(a) - sqr(b)))*arctan(x/sqrt(1-sqr(x));
Проверки:
if((sqr(a)-sqr(b)) <> 0)
if(sqrt(1-sqr(x)) <> 0)
Program funkciya;
Uses crt;
Var
y,a,b,x:real;
Begin
clrscr;
write('Enter a: ');
readln(a);
write('Enter b: ');
readln(b);
write('Enter x: ');
readln(x);
y:=sqr(cos(x*x*x)) - x/sqrt(sqr(a)+sqr(b)) * arctan(x/sqrt(1-x*x));
writeln('y = ',y);
readkey;
End.
может быть Вы, для проверки, вводите что-то типа 1, 1, 1?
НУ а если мне допустим нужно вводить большие значения?
Ок, всё понятно, ну тогда подскажите пожалуйста правельно ли к этой функции составлена программа??
Program funkciya;
Uses crt;
Var
y,a,b,x:real;
Begin
clrscr;
writeln ('vvedite a=');
readln (a);
writeln ('vvedite b=');
readln (b);
writeln ('vvedite x=');
readln (x);
y:=sqr(cos(sqr(x)*x))-(x/sqrt(sqr(a)+sqr(b))*arctan(x/sqrt(1-sqr(x))));
writeln ('y',y:7:2);
readkey;
End.
Program funkciya;
Uses crt;
Var
y,a,b,x:real;
Begin
clrscr;
writeln ('vvedite a=');
readln (a);
writeln ('vvedite b=');
readln (b);
writeln ('vvedite x=');
readln (x);
if((sqr(a)-sqr(b)) <> 0)
then
if(sqrt(1-sqr(x)) <> 0)
then
y:=sqr(cos(sqr(x)*x))-(x/sqrt(sqr(a)+sqr(b))*arctan(x/sqrt(1-sqr(x))));
writeln ('y',y:7:2);
readkey;
End.
Я ещё добавил проверку, которую подсказал Тигр
Спасибо вам за помощь, ну мы к сожалению до такого ещё не доходили, нам про100 нужно написать программу, и если нужно, то задать условия, ну у вас для меня очень сложный вариант.
И это и есть "просто написанная программа". Пока писал, раз 5 хотелось сделать это всё через функции)
Курсы
Ну а если я напишу про100 решение в паскале , и буду вводить как вы и говорили выше не надо давать функции sqrt отрицательные числа. Попробуйте 0.1, 0.1, 0.1, то функция, тоже считается решённой?? Если задавать функции sqrt значения меньше 1?
нельзя делить на ноль и нельзя вычитать кв.корень из отрицательных. То есть a*a+b*b не должно равняться нулю, а x должен быть в интервале (-1;1).