2012-10-19 99 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 
    } 

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