Цитата:
Сообщение от Olga89
Вот мой вариант решения. Думаю, что тело программы написано верно, но выдает ошибку в значениях х < 3 и х = 3. Наверно, я неправильно перевела выражения( Здесь я абсолютно запуталась! Помогите пожалуйста!
|
И это, и не только. Вы абсолютно неправильно ввели второе условие, тут я поправил (см. ниже). А вот что касается первого и третьего, то тут, извините за грубость, явный брёх в самом задании. Давайте разберемся.
1. В первом условии для начала, ввиду отсутствия вертикального штришка на конце знака радикала, неясно, докуда он тянется, т.е. накрывает он х^2 или нет. Ну ладно, будем исходить из того, что накрывает и все четыре слагаемых находятся под корнем. Но в любом случае, достаточно подставить значение х<3 (например, х=1), чтобы убедиться, что выражение под знаком радикала будет отрицательным. Отсюда и ошибка.
2. В третьем условии стоИт очень быстро нарастающая функция, которая почти сразу, т.е. даже при сравнительно небольших значениях х (в пределах 10) вылетит за границы разрядной сетки.
Исходя из приведенного анализа, имею предложить вариант программы, в котором:
1. Исправлено второе условие.
2. Обменены местами знаки неравенств первого и третьего условий. Почти уверен, что так и предполагалось - просто опечатка. При таких (исправленных) неравенствах никаких ошибок и аномально больших значений не возникает.
3. Вывод значения функции сделан форматным - просто для красоты.
Код:
program k_work_1;
var
x,y,f : real;
begin
writeln ('введите x');
readln (x);
if x>3 then f:=sqrt(exp(ln(x)*6)-6*(exp(ln(x)*4)+1)-x*x);
if x=3 then
begin
y:=(6*x-x*x)/8;
f:=ln(cos(y)/sin(y));
end;
if x<3 then f:=exp(x*x-4)-1;
writeln ('f= ', f:0:5);
readln;
end.