Показать сообщение отдельно
Старый 15.08.2011, 21:15   #2 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от 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.
Vladimir_S вне форума  
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070