-1

我正在使用旧软件 TurboC++ 4.5(1995) 进行编译,但遇到了一些错误。任何人都可以帮忙吗?

#include<iostream.h>
#include<math.h>

void cal_root(int,int,int,float&,float&);
void main()
{
  float root1=0,root2=0;
  int a,b,c;
  cout<<"Enter the three co-efficients of quadratic equation with spaces.\n";
  cin>>a>>b>>c;
  cal_root(a,b,c,root1,root2);
  cout<<"The roots for given Quadratic Equation are "<<root1<<" & "<<root2<<".";
}
void cal_root(int a,int b,int c,float& root1,float& root2)
{
  root1=-b+(sqrt((b*b)-4ac))/(2a); //error here
  root2=-b-(sqrt((b*b)-4ac))/(2a); //error here
}

我收到以下错误:
Function call missing ) in function cal_root(int, int, int, float&, float &) 在第 16 和 17 行

4

6 回答 6

2

你不能做这样的乘法:

4ac
2a

你必须把它拼出来:

4 * a * c
2 * a

但是请确保您对括号很自由,因为例如,2 * a在该表达式中,将首先除以 2,然后乘以 a。实际上,您想除以 2 并除以 a。

实际上,由于操作顺序,您的 -b 位置也很糟糕。表达式应如下所示:

(-b + sqrt((b*b) - (4*a*c)))
    / (2*a)
于 2012-10-19T02:45:49.880 回答
0

首先

  void cal_root(int a,int b,int c,float& root1,float& root2)
  {
      root1=-b+(sqrt((b*b)-4ac))/(2a); //error here
      root2=-b-(sqrt((b*b)-4ac))/(2a); //error here
  }

这应该写成

    void cal_root(int a,int b,int c,float& root1,float& root2)
    {
      root1=-b+(sqrt((b*b)-(4*a*c)))/(2*a); //correction
      root2=-b-(sqrt((b*b)-(4*a*c)))/(2*a); //correction
    }

其次避免在 main 中使用 void ...(只是一个建议)

于 2012-10-19T05:03:54.833 回答
0

你不能写 4ac 或 2a - 这不是数学。

改变

4ac = 4*a*c
2a = 2*a

void main 也是错误的。

于 2012-10-19T02:46:21.060 回答
0

您不能像在代数中那样离开运算符。4ac并且2a应该是4*a*c2*a

另外,获得更好的编译器/IDE。当我大约 10 年前开始编程时,Turbo C++ 是最糟糕的废话。还是那么糟糕。以 Netbeans 为例。

它允许的简单事实void main()证明了我的观点。Main 永远不应该被声明void

于 2012-10-19T02:45:40.507 回答
0

你不在数学课上,你必须明确地写出乘法:

4ac -> 4*a*c
2a -> 2*a
于 2012-10-19T02:45:44.480 回答
0

您不能将变量乘以常量 via2x等,因为它被视为文字 2,后缀为 x,或者无论您的变量碰巧是什么,后缀都会更改变量的表示形式(例如 LL 会处理它很长很长)。

相反,使用operator*

4 * a * c
2 * a
于 2012-10-19T02:46:06.977 回答