求解y的方程

时间:2014-09-11 05:17:19

标签: c++

在测试方程式时,我在-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;
}

1 个答案:

答案 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/170,计算的等式基本为-z + x/(a%2) + PI

所以,除非你改变方程式并将变换后的方程式放入代码中,否则你将得不到预期的结果。