Тема: Функція мовою С, арксинуси
Добрий вечір!
Вивчаю підпрограми-функції мовою С.
Спробувала розв'язати задачу. Даю скріншот з умовою.
Це текст програми:
#include <stdio.h>
#include <math.h>
float arcsinus(float);
int main()
{
float z, y, Q, k;
printf("Уведіть Z\t");
scanf("%f", &z);
printf("\nУведіть Y\t");
scanf("%f", &y);
if((z>1||z<-1)&&(y>1)||(y<-1))
printf("\nУведіть інші значення");
else if(((z>-1)&&(z<1))&&((y>-1)&&(y<1)))
Q=(2+arcsinus(z))/(5-fabs(arcsinus(y)*arcsinus(y)-arcsinus(z)));
printf("\nQ=%f",Q);
return 0;
}
float arcsinus(float X){
for(float n=1;n<12;n++)
X+=X+(2*n-1)*pow(X,(2*n+1))/(2*n*(2*n+1));
return X;
}
Працює, але досить дивно.
Наприклад при z=0.2
Уведіть Z 0.2
Уведіть Y
Q=0.400000
. Не розумію, чому не зчитується у.
При z=3, y=4,
Уведіть Z 3
Уведіть Y 4
Уведіть інші значення
Q=0.000000
. Не розумію, чому тут обчислюється Q.
А ще бував результат Q=-nan або Q=nan.
Що не так з кодом і як це виправити?
Чекаю відповіді і дякую наперед