2017-03-05 84 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()将其删除。

相关问题