我的小程序奇怪地关闭了!
该程序计算达到保存目标的年数。 但它在代码中没有问题,我根本没有看到问题。
当我运行程序时,它完全停止了,这也是当我放入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 :(得分:0)
当您使用cin >> interest
时,您会记录输入时输入的'\ n',然后在cin.get()
的下一个字符上读取。尝试第二次调用cin.get()
,它应该可以正常工作。
答案 1 :(得分:-1)
缓冲区中有一些空格(&#39;&#39;&#39; \ n&#39;等等),因为在cin之后,换行符会进入输入缓冲区。您可以在cin.ignore()
之后或cin >> interest
之前使用cin.get()
删除它。