Попытался сделать задачу из интернета на If,Else. В итоге X выводится нормально,а Y с QNan. Перепробовал много вариантов,или Qnan или 0.В чем может быть причина? Сейчас вроде бы вышел правильный ответ,можете посмотреть,код правильный?
#include<stdio.h>
#include<math.h>
#include<tgmath.h>
int main ()
{
double z=cos(1.3);
float x;
int y;
if (z<0)
{
x=(z+z)+tan(z);
y=sin(x)+log(x)+log(x);
printf("X=%f\nY=%e,x,y);
}
else if (0<=z<8)
{
x=log(pow(z,4))+z+z;
y=sin(x)+log(x)+log(x);
printf("X=%f\nY=%e",x,y);
}
else if(z>8)
{
x=cos(z)+(z+z);
y=sin(x)+log(x)+log(x);
printf("X=%f\nY=%e",x,y);
}
getchar();
}
У вас y
объявлен как int
, а выводить вы его пытаетесь спецификатором %e
. Непорядок! Если вы его выведите как %d
, никакого NaN не будет.
Ну, а если вы его делаете double
- дело другое. Смотрите, z
у вас 0.27 примерно, так что x
у вас получается отрицательным, так? а y
при вычислении берет от x
логарифм. А что такое логарифм от отрицательного числа? вот вы и получаете NaN...
И, кстати,
if (0<=z<8)
правильно записывается как
if (0<=z && z<8)
В целом я бы записал ваш код так:
double y,z=cos(1.3), x = 2*z;
if (z<0)
{
x+=tan(z);
}
else if (z<8)
{
x+=4*log(z);
}
else
{
x+=cos(z);
}
y=sin(x)+2*log(x);
printf("X=%lf\nY=%lf\n",x,y);
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Этот код все делает правильно: очищает экран, и вывод с первой строки, первой позиции ячейки:
Пишу пошаговую 2D игру, где персонаж передвигается в строго заданном направлении по клеткам поляИспользую MouseListener
При компиляции Java приложения вписываются данные в MANIFESTMF файл которые потом должны использоваться при запуске приложения
Есть 3 фильтра: Filter1, Filter2, Filter3Каждый из них помечен аннотацией @WebFilter("/main")