Нужно сделать программу, которая выводит результат вычисления выражения в консоль. Проблема в том, что результат выводится корректно, если присвоить значения переменным в коде программы. Но если ввести их с клавиатуры, то выводит nan. Код на Java.
Как исправить ошибку и сделать две такие же программы на C и C++ ?
package Formula;
import static java.lang.Math.pow;
import java.util.Scanner;
public class My_Program {
public static void main(String[] args) {
double m, a, res, s1, e, l1, s2, mod1, mod2, l2;
System.out.println("Введите целое число х:");
Scanner in= new Scanner (System.in);
int x = in.nextInt();
System.out.println("Введите целое число d:");
int d = in.nextInt();
System.out.println("Введите дробное число a. Целую и дробную часть разделите запятой:");
a = in.nextDouble();
System.out.println("Введите дробное число u. Целую и дробную часть разделите запятой:");
m = in.nextDouble();
s1= Math.pow(Math.sin( pow(d,3)),2);
e=Math.exp(Math.abs(a-Math.tan(x)));
mod1=Math.abs((1-s1)/(1.5+e));
l1=pow(Math.log(pow(a,2)),3);
s2=pow(Math.sin(d),2);
mod2=Math.abs((m-l1)/(1+s2));
l2=pow(Math.log(mod2)/Math.log(3),2);
res=Math.acos (pow( mod1,0.3333)+Math.sqrt(2.7+l2));
System.out.print("Входные данные \r\n");
System.out.print("============== \r\n");
System.out.printf("a =%.1f",a);
System.out.print( "\r\n");
System.out.printf("d = %d ",d);
System.out.print( "\r\n");
System.out.printf("x = %d",x);
System.out.print( "\r\n");
System.out.printf("U=%f",m);
System.out.print("\r\n");
System.out.print("Результат:\r\n");
System.out.print("==============");
System.out.print( "\r\n");
System.out.printf("B= %f",res);
}
}
В документации Math.acos написано:
If the argument is NaN or its absolute value is greater than 1, then the result is NaN.
В вашем случае, Вы пытаетесь вычислить арккосинус числа, которое больше единицы и получаете в ответе NaN
Если присвоить значения переменным в коде программы, тоже будет выводиться NaN, попробуйте вместо определения переменных через nextInt(), определить их в коде программы так:
int x = 22;
int d = 7;
double a = 1.4;
double m = 14.9;
Сборка персонального компьютера от Artline: умный выбор для современных пользователей