2015-06-01 85 views
2

我有這個代碼,加起來雙打由用戶輸入,並停止時,用戶輸入負數。我想改變它,以便當用戶按下ENTER鍵並且不輸入數字時它會停止,這可能嗎?如果是這樣,怎麼樣?C++輸入雙倍直到輸入鍵被按下

double sum = 0, n; 

cout << endl; 

do 
{ 
    cout << "Enter an amount <negative to quit>: "; 
    cin >> n; 

    if(n >= 0) 
    { 
     sum += n; 
    } 
}while(n >= 0); 

return sum; 
+1

這可能幫助 - http://stackoverflow.com/questions/15994463/check-for-empty-line-using-cin –

+0

具有與弦做,我知道該怎麼做,我不認爲getline或!n.empty將起作用,因爲它的雙重 – beginnerjohn

+0

由於缺乏背景而感到遺憾 - 主要答案是爲什麼會有人提出這個建議。你可以將它作爲一個字符串拉入,如果字符串不是空的,則解析出它的兩倍。 –

回答

2

使用getline()如下:

#include <iostream> 
#include <string> 
using namespace std; 
int main() 
{ 
    string s; 
    double sum=0.0; 
    while (1) 
    { 
     cout<<"Enter Number:"; 
     getline(cin, s); 
     if (s.empty()) 
     { 
      cout <<"Sum is: " <<sum; 
      return 0; 
     } 
     else 
     { 
      sum=sum+ stod(s); 
     } 
    }  
    return 0; 
} 

輸出示例:

Enter Number:89 
    Enter Number:89.9 
    Enter Number: 
    Sum is: 178.9 
+0

沒有工作,不能轉換參數 – beginnerjohn

+0

@beginnerjohn我改變了我的答案 – Abraham

+0

stoi標識符沒有找到我試圖包括字符串和sstream和它沒有工作,也轉換必須是一個雙不是一個int – beginnerjohn

1

我平時從來不做> =,因爲特別是當你需要找到位數這可能會導致混亂或模式。對於上面的代碼,我將如何去做。

double sum =0; 
    double n =0; 

    while(cin >> n) // this will keep going as long as you either enter a letter or just enter 
    { 
     sum += n; // this will take any input that is good 

     if(!cin.good()) // this will break if anything but numbers are entered as long as you enter anything other then enter or a number 
     break; 

    } 
+0

沒有工作,它從來沒有停止採取數字 – beginnerjohn

+0

好吧,我只是跑代碼,它的工作原理,只要你按任何其他東西然後輸入或數字它將取消和打破 – Gorilla

+0

是的,它的工作方式,是否有按Enter鍵結束它? – beginnerjohn