2017-11-04 61 views
0

我嘗試編譯代碼塊,但不工作的代碼,我不知道它是什麼產生錯誤函數rand()的代碼塊犯規編譯

#include<iostream> 
#include<iomanip> 
#include<cmath> 
#include<ctime> 
#include<cstdlib> 

using namespace std; 

int main() 
{ 
const int NUMLANZ=1000; 

int caras=0,cruces=0,i; 
double volado,porcaras,porcruces; 

srand(time(NULL)); 
for(i=1;1<=NUMLANZ; i++) 
{ 
    volado= ((double) rand()/(RAND_MAX)); 
    if(volado>0.5) 
     caras=caras+1; 
    else 
     cruces=cruces+1; 
} 
porcaras=(caras/double (NUMLANZ))*100; 
porcruces=(cruces/ double(NUMLANZ))*100; 
cout<<"\nCaras salio "<<porcaras<<" por ciento de las veces"; 
cout<<"\nCruces salio "<<porcruces<<" por ciento de las veces"; 

return 0; 
} 

即時通訊新的C++代碼,我不知道如果編譯產生錯誤,因爲這段代碼是從C++書籍學習中複製出來的,所以奇怪的是這段代碼不起作用

+1

即使您不知道如何使用調試器,只需在一些行後面添加cout語句,並查看它崩潰或給出錯誤的位置.... –

回答

1

循環永遠不會終止,因爲文字常量1總是小於NUMLANZ

比較:

for(i = 1; 1 <= NUMLANZ; i++) 
       ^

for(i = 1; i <= NUMLANZ; i++) 
       ^

還請注意,這是更傳統的循環計數器從零開始:

for(i = 0; i < NUMLANZ; i++) 

在這種情況下,它沒有什麼區別其他那麼少一個字符,但是如果您使用i爲例如數組索引e,這是至關重要的。