2014-10-11 95 views
1

我正在C++上編寫一個簡單的程序,它讀取數字並輸出英文文本中的數字。它可以讀取0到9,999,999之間的數字。我將它分爲函數,函數,數十,數百,數千和數百萬個函數。For循環沒有按要求執行

我有一個for循環在經過僅僅從整個號碼到另一個字符串一些數字以百萬計的功能,但它只能執行一次,它不是複製數字:

`

string millionths(string num_i) 
{ 
    string num_m; 
    string num_l; 
    string num_ln="000000"; 
    string num_ln5="00000"; 
    string num_ln4="0000"; 
    string num_ln3="000"; 
    string num_ln2="00"; 
    int it; 
/*I just want the last 6 characters from num_i to be copied to num_ln 
but the loop is only executing once and doesn't copy any value*/ 
    for(it=0;it<6;it++); 
     {num_ln[it]=num_i[it+1];} 
    num_m=units(num_i[0]); 
    if(num_ln=="000000") 
     return num_m+" million"; 
    else if(num_ln[0]=='0'&&num_ln[1]=='0'&&num_ln[2]=='0'&&num_ln[3]=='0'&&num_ln[4]=='0') 
    {num_l=units(num_ln[5]);} 
    else if(num_ln[0]=='0'&&num_ln[1]=='0'&&num_ln[2]=='0'&&num_ln[3]=='0') 
    {for(it=0;it<2;it++); 
     {num_ln2[it]=num_i[it+5];} 
    num_l=tenths(num_ln2);} 
    else if(num_ln[0]=='0'&&num_ln[1]=='0'&&num_ln[2]=='0') 
    {for(it=0;it<3;it++); 
     {num_ln3[it]=num_i[it+4];} 
    num_l=hundreths(num_ln3);} 
    else if(num_ln[0]=='0'&&num_ln[1]=='0') 
    {for(it=0;it<4;it++); 
     {num_ln4[it]=num_i[it+3];} 
    num_l=thousanths(num_ln4, 1);} 
    else if(num_ln[0]=='0') 
    {for(it=0;it<5;it++); 
     {num_ln5[it]=num_i[it+2];} 
    num_l=thousanths(num_ln5, 2);} 
    else 
    {num_l=thousanths(num_ln, 3);} 
    return num_m+" million "+num_l; 
} 

`

我真的很感謝你的幫忙。

+1

該代碼的格式是可怕的。如果你修復它,你可能會自己找到錯誤。 – Radiodef 2014-10-11 22:49:49

+0

「簡單」....... – 2014-10-12 00:01:45

回答

1

這是一個空對這裏的第一行循環:

for(it=0;it<6;it++);  //You don't want to do this 
    {num_ln[it]=num_i[it+1];} 

的結果是,這個循環沒有實際做任何運行,並與it == 6完成。結果是num_ln[it]=num_i[it+1]只能完成一次,只能完成it=6。這可能不是你想要的,因爲它只複製一個元素。

for(it=0;it<6;it++){ 
    num_ln[it]=num_i[it+1]; 
} 

通過使用更標準的括號風格這個問題得到解決,這也將使它更容易對其他程序員閱讀和理解你的代碼:這可以如下固定。

+0

事實上,所有的循環都有相同的錯字。 – Radiodef 2014-10-11 22:50:22

+0

我甚至沒有意識到我在for()後面加了一個分號。你的眼睛比我更好。 – 2014-10-11 23:26:36