2013-10-21 212 views
0

每次用戶輸入一個整數時,我都可以得到總和,直到輸入負數或非整數。問題是我的總和計算結果是關閉的。 I.E用戶放1000;總和輸出1111,然後用戶輸入2000,它總計爲3333.只要有任何建議,讚賞。我仍然會嘗試一下我的編碼。C正確計算總和

#include <iostream> 
#include <cstdlib> 

using namespace std; 

int main() 
{ 
int j , i = 0, k = 0,number; 
double sum = 0; 
cout << "Enter Positive integer number: "; 
while(cin >> number) 
{ 

    cout << endl; 
    if(number < 0)//test if the number is negative 
    { 
     cout << "Ending program since user has input a negative number" <<endl; 
     break; 
    } 
    int temp = number; 
    int p = 1; 
    while(temp > 0) //counting number of digits 
    { 
     sum = sum+temp; //Sum attempt. 
     temp /= 10; 
     p *= 10; 
     i++; 

    } 

     cout << sum << endl; 

    j = i % 3; 
    p /= 10; 
    while(i > 0)//display integer number with 1000 seperator 
    { 
     //this is giving me error 
     cout << char ((number/p) +'0'); 
     number %= p; 
     p /= 10; 
     i--; 
     k++; 
     j--; 
     if ((k % 3 == 0 && i > 0)||(j == 0 && i > 2)) 
     { 
      cout <<","; 
      k = 0; 
     } 
    } 
    cout << endl << endl; 
    cout << "This program will exit if you input any non-integer characters\n"; 
    cout << "Enter another integer number: "; 
} 

return 0; 
    } 
+3

你確定你知道'while(temp> 0)'在做什麼循環嗎?以1000爲例,你得到'sum = 0 + 1000','sum = 1000 + 100','sum = 1100 + 10',最後'sum = 1110 + 1'。 – jonhopkins

+0

感謝您的回覆。我是一個doofus大聲笑; /。我會用這些循環仔細重新進行總和計算。 – Christian

+0

這只是一個簡單的錯誤;發生在我們身上。我只是不確定這是否是你的意圖。你是否試圖將數字的所有數字加起來,如1234 = 1 + 2 + 3 + 4 = 10? – jonhopkins

回答

0

它看起來像你想的輸出,以1000rpm的邊界插入逗號的整數。即:1000000將顯示爲1,000,000。

這種情況下,最簡單的方法可能不涉及數學,而只是獲取int的字符串表示(例如,atoi())並通過該數字計數。從後面開始,前進三個字符,插入一個逗號,重複,直到用完字符串。

字符串處理的細節留給讀者練習 - 看起來畢竟是他的作業。 ;-)

+0

嘿感謝您的回覆,我剛剛移動了我的總和計算「sum = sum + temp;」在while循環之前並正確計算。感謝您對atoi功能的建議。實際上我還有一件事要做,那就是爲這些整數添加一個小數。我開始嘗試編寫逗號的第一個代碼。 – Christian