在测试方程式时,我在-1.#IND00
求解时得到y
作为答案。我基本上试图创建一个解决y
的程序,给出下面的等式
Y = Y /(3/17)-z + X /(%2)+ PI
#include <stdio.h>
#include <math.h>
#define PI 3.14
int main (void)
{
int a=0;
double z=0,x=0,y=0;
printf("Values for x, z, and a:");
scanf("%lf%lf%d", &x,&z,&a);
y = (((y/(double)(3/17)))-z + (x/(a%2))+PI);
printf("y = %lf\n", y);
return 0;
}
答案 0 :(得分:0)
由于没有问号,我假设问题是“你如何编写解决这个等式的C ++程序?”
C ++是一种编程语言,它本身无法解决你的等式,即C ++不会对你的等式进行任何转换,以使其成为y
仅在左侧发生的形式右侧的参数。您必须自己,手动或使用解算器进行转换。
发布的代码会发生什么?
让我们根据括号从里到外从等式y/(double)(3/17)
的最左边部分开始:
3/17
被解释为整数除法,结果为0
; (double)(0)
将整数0
转换为0.0
的两倍; y/0.0
按照in this post解释为0,导致您的错误。您可以通过投放第一个整数(如(double)3/17
)或将整数3
转换为双3.0
或使用static_cast
来解决注释中指出的问题。
y
仍然初始化为0,因此y/(double)3/17
为0
,计算的等式基本为-z + x/(a%2) + PI
。所以,除非你改变方程式并将变换后的方程式放入代码中,否则你将得不到预期的结果。