我正在使用旧版软件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行
答案 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)
你不能像在代数中那样离开算子。 4ac
和2a
应为4*a*c
和2*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)
答案 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 ...(只是一个建议)