2017-03-05 82 views
0

我被卡在一個奇怪的關閉我的小程序!即使我有cin.get(),程序也會停止。

程序會計算達到儲蓄目標的年數。 但在代碼中沒有問題,我根本沒有看到問題。當我運行程序時,它完全停止後,這也是當我把cin.get();這應該讓程序等待按鍵。

未檢測到錯誤。我還補充說明,我已經在VS 2015和Netbeans中使用了相同的代碼,結果相同。我在VS中創建了一個新項目,並從netbeans複製了代碼。

希望快速回答​​!

這是我的代碼!

/* Savingscalculation.cpp : Defines the entry point for the console 
    application.*/ 
#include "stdafx.h" 
#include "iostream" 

using namespace std; 

int main() 
{ 
// Sätter variabler för programmet. 
float inputsaving; 
float savingoal; 
int years = 0; 
float interest; 
float savingsum; 
float savsum; 

/* Sätter ett introduktionsmeddelande, som får programmet att upplevas mer 
    proffessionellt */   
cout << " ------------------------------" << endl; 
cout << "| Räkna ut hur många år ditt |" << endl; 
cout << "| sparande kommer att ta! |" << endl; 
cout << "|  Tryck enter för att  |" << endl; 
cout << "|   fortsätta.   |" << endl; 
cout << " ------------------------------" << endl; 
cin.get(); 

cout << "---------------------------------" << endl; 
cout << "Ange ett sparmål: "; // Användaren ombeds att ange ett sparmål 
cin >> savingoal;   // Det angivna sparmålet sätts till variabeln  

cout << "---------------------------------" << endl; 
cout << "Ange en årlig insättning: "; 
// Användaren ombeds att ange en årlig insättning 
cin >> inputsaving;     
// Den angivna insättningen sätts till variabeln inputsaving 

cout << "---------------------------------" << endl; 
cout << "Ange en årlig sparränta: "; 
// Användaren ombeds att ange en procentsats 
cin >> interest;  // Den angivna räntan sätts till variabeln interest 
cout << "---------------------------------" << endl; 

// Inmatning klar 

// uträkning börjar // 

// Algoritmen för att räkna ut en insättning + räntan för ett år 
savingsum = inputsaving + inputsaving*(interest/100); cout << endl; 
savsum = savingsum; 
/* Den uträknade summan kopieras in i variabeln 
savsum för vidare uträkning i loopen */ 


while (savingsum < savingoal) 
/* Jämför sparandet per år med sparmålet, 
loopen fortsätter tills sparmålet  uppnåtts. */ 
{ 
    years++;  // Räknar ut antal år med +1 för varje varv i loopen 
    savingsum = savingsum + savsum; /* Lägger på 1 års insättning inkl. 
             räntan för varje nytt år (varv) */ 
} 

// uträkning klar // 

// Sparmålet uppnått och resultatet skrivs ut på skärmen. 
cout << "------------------------------------" << endl; 
cout << "Du har uppnått ditt mål efter " << years << " år" << endl; 
// Skriver ut antal år tills sparmålet uppnåtts 
cout << "Ditt saldo är då " << savingsum << "kr" << endl; 
// Skriver ut saldot som är när sparmålet är nått 
cout << "------------------------------------" << endl; 

cin.get(); 
return 0; 
} 

問候 亨裏克

回答

0

當您使用cin >> interest您記錄「\ n」你進入,當你打輸入,然後在下一個字符閱讀cin.get()。嘗試第二次撥打cin.get(),它應該可以工作。

+0

我解決了!我加了3個cin.ignore(); 1)在「感興趣」輸入之後,2)在循環3)處於程序結束之前處於第一次計算。感謝所有關於我的問題的幫助! –

-1

緩衝區中有一些空白('','\ n'等),因爲在cin之後,換行符會進入輸入緩衝區。您可以在cin >> interest之後或cin.get()之前使用cin.ignore()將其刪除。

相關問題