使用Turbo C ++编译时错误

时间:2012-10-19 02:42:16

标签: c++

我正在使用旧版软件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行

6 个答案:

答案 0 :(得分:2)

你不能这样做乘法:

4ac
2a

你必须拼写出来:

4 * a * c
2 * a

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

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

(-b + sqrt((b*b) - (4*a*c)))
    / (2*a)

答案 1 :(得分:0)

你不能像在代数中那样离开算子。 4ac2a应为4*a*c2*a

此外,获得更好的编译器/ IDE。当我10年前开始编程时,Turbo C ++是最糟糕的废话。它还是那么糟糕。例如,使用Netbeans。

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

答案 2 :(得分:0)

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

4ac -> 4*a*c
2a -> 2*a

答案 3 :(得分:0)

你不能通过2x等将变量乘以常量,因为它被视为文字,2,后缀为x,或者你的变量恰好是什么,后缀改变了变量(例如LL会将其视为很长的一段时间)。

相反,请使用operator*

4 * a * c
2 * a

答案 4 :(得分:0)

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

更改

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

也是无效的主要是wrong

答案 5 :(得分: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
    }

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