2012-10-19 98 views
-1

我正在编译一个旧的软件TurboC++ 4.5(1995),我有一些错误。谁能帮忙?TurboC++编译时错误

#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

+2

是否有任何理由,你是使用*这样的*旧的编译器?除非你有很好的理由,否则你只会给自己造成痛苦。 – Mankarse

+0

我知道它的废话,但在我的学校,他们教这个... – user142187

+1

如果你正在学习计算机科学,沟渠那所学校,如果你曾经想专业地使用C++ ......我认真......代码不会编译甚至在修正了'cal_root'中的错误之后。 – ApplePie

回答

0

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

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

thnx队友,,我忘了 – user142187

+0

不要忘记把'2 * a'放入parens,例如, '(2 * a)',否则冒着'/ 2 * a'的风险变为'除以2,然后乘以a'。或者,你可以重复分配两个:'/ 2/a'。 –

0

你不能离开运营商,你会在代数。 4ac2a应该是4*a*c2*a

另外,得到一个更好的编译器/ IDE。 Turbo C++是我10年前开始编程时最糟糕的一块废话。它仍然很糟糕。例如使用Netbeans。

它允许void main()这个简单的事实证明了我的观点。主绝对不应该被宣布为void

2

你不能这样做乘法是这样的:

4ac 
2a 

你必须拼出来:

4 * a * c 
2 * a 

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

实际上,由于操作顺序,您的-b也处于非常不利的位置。表达式应该是这样的:

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

因为你是第一个提到prenthsis,所以你得到+1。 $ 5表示试图2a的somone也会尝试'...))/ 2 * a' –

0

无法通过2x之类乘以常数变量,因为它得到一个文本,2对待,x的后缀,或任何你的变量发生后缀会改变变量的表示形式(例如,LL会将其视为很长的一段时间)。

相反,使用operator*

4 * a * c 
2 * a 
0

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

变化

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

而且无效的主要是wrong

+0

void main在此编译器中没有错 – user142187

+1

@ user142187错在哪里或者是什么东西不依赖于编译器。在我的答案中点击'错误​​'。 – user93353

+0

@ user142187因为编译器允许它并不意味着它是正确的。它违反了C++规范,你很幸运,因为它,你还没有写任何会破坏的东西。 –

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 
    } 

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