|
42.5 Кб |
|
| задание в прилагаемом файле. Пытаюсь решить так:
#include<stdio.h>
#include<math.h>
main()
{
float x,y,z,r;
printf("vvedite x,y\n");
scanf("%f%f",&x,&y);
r=(x*x)+(y*y);
r=sqrt(r);
if (y<0||r>1||r<(-1)||r<0.027)//проверка на принадлежность области
{
double z;
z=(x*(-1))-1;
z=sqrt(z);
printf("ne prinadlejit u=%f",z); return 0;
}
else
{
x=(x*x)-1;
printf("Prinadlejit u=%f",x);
return 0;
}
}
|
Если принадлежит области - выдает правильный результат, ну а нет - то белиберда какая то. Понимаю, что где то с типами переменных затупил, а вот где не пойму. Компилирую GCC4.5.
Объясните пожалуйста в чем ошибка? | |
|
|
|
|
6.4 Кб |
|
|
для: Miha_drinking_bout
(02.10.2010 в 13:47)
| | Решил таки. Действительно затупил. Для вычисления корня передавал отрицательное значение.
Теперь рабочий вариант выглядит так:
#include<stdio.h>
#include<math.h>
main()
{
float x,y,z,r;
printf("vvedite x,y\n");
scanf("%f%f",&x,&y);
r=(x*x)+(y*y);
r=sqrt(r);
if (y<0||r>1||r<(-1)||r<0.027)//проверка на принадлежность области
{
double z;
z=fabs(x-1);
z=sqrt(z);
printf("ne prinadlejit u=%f",z); return 0;
}
else
{
x=(x*x)-1;
printf("Prinadlejit u=%f",x);
return 0;
}
}
|
z=(x*(-1))-1; заменил на z=fabs(x-1); | |
|
|
|