即使我有cin.get(),程序也会停止;

时间:2017-03-05 10:11:41

标签: c++ netbeans visual-studio-2015

我的小程序奇怪地关闭了!

该程序计算达到保存目标的年数。 但它在代码中没有问题,我根本没有看到问题。

当我运行程序时,它完全停止了,这也是当我放入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;
}

此致 亨里克

2 个答案:

答案 0 :(得分:0)

当您使用cin >> interest时,您会记录输入时输入的'\ n',然后在cin.get()的下一个字符上读取。尝试第二次调用cin.get(),它应该可以正常工作。

答案 1 :(得分:-1)

缓冲区中有一些空格(&#39;&#39;&#39; \ n&#39;等等),因为在cin之后,换行符会进入输入缓冲区。您可以在cin.ignore()之后或cin >> interest之前使用cin.get()删除它。