1

我对整个编程都是新手,所以请耐心等待。我想制作一个可以计算二次轴和x轴之间面积的程序。现在我的代码只为函数设计,a 是积极的,c 是消极的。

#include <stdio.h>


int main()
{

  float a; 
  float b; 
  float c;
  float x; /* this is the zero that is to the right*/
  float y; /* this is the zero that is to the left*/
  float z;

  {

    printf("Consider the function ax^2 + bx + c\n");

    printf("Enter the a value:  \n");
    scanf("%f",&a);

    printf("Enter the b value:  \n");
    scanf("%f",&b);

    printf("Enter the c value:  \n");
    scanf("%f", &c);

    x = (( -b + sqrt(b*b - 4*a*c)) / (2*a));
    y = (( -b - sqrt(b*b - 4*a*c)) / (2*a));

    do {
      z=(((y+0.01)-(y))*((a*(y*y))+(b*y)+(c)));
      y+0.01;} while (x>y);

      if (y>=x) {
        printf("The area is %f", z);
      }

问题是程序永远不会停止运行。我想做的是制作小方块并测量它们的面积(记住 LRAM 和 RRAM)。所以我在做的是(零+一点点)乘以y值(a *(y * y))+(b * y)+(c)))`

有小费吗?

4

3 回答 3

2

do {
    z=(((y+0.01)-(y))*((a*(y*y))+(b*y)+(c)));
    y+0.01;
} while (x>y);

如果您使用,您应该更改y+0.01为,在循环期间永远不要更改。y += 0.01y+0.01y

于 2011-03-26T09:13:01.813 回答
0

在循环 中增加z和。ydo while

z = 0; //initialize z to remove any garbage values.
do {
   // here z is NOT getting assigned, but incremented each time this loop runs.
   // NOTE: A += C; is short for A = A + C;
   z += (((y+0.01)-(y))*((a*(y*y))+(b*y)+(c)));
   y += 0.01;
}  
while (x>y);  
于 2011-03-26T09:18:42.910 回答
-1

我明白这并没有立即帮助,但对于这样的东西,数字食谱是终极书籍。旧的 C 版本(当然,在 C++ 中仍然可以很好地工作)是免费提供的。他们也有你可以购买的 C++ 版本。

它为书中的每个算法提供了代码,并逐步解释了你在做什么以及为什么。

链接到主页

链接到 C 版本

于 2011-03-26T09:31:02.653 回答