So I'm trying to set this program up to calculate the balance of an account. I need to make sure the starting balance is entered as a positive number. I have the positive part down, but how do I make sure that the input is also a number and not letters or other non-numbers?
#include <iostream>
#include <cmath>
#include <iomanip>
#include <string>
using namespace std;
int main()
{
double startBal, // Starting balance of the savings account
ratePercent, // Annual percentage interest rate on account
rateAnnual, // Annual decimal interest rate on account
rateMonth, // Monthly decimal interest rate on account
deposit1, // First month's deposits
deposit2, // Second month's deposits
deposit3, // Third month's deposits
interest1, // Interest earned after first month
interest2, // Interest earned after second month
interest3, // Interest earned after third month
count; // Count the iterations
// Get the starting balance for the account.
cout << "What is the starting balance of the account?" << endl;
cin >> startBal;
while (startBal < 0 ) {
cout << "Input must be a positive number. Please enter a valid number." << endl;
cin >> startBal;
}
// Get the annual percentage rate.
cout << "What is the annual interest rate in percentage form?" << endl;
cin >> ratePercent;
// Calculate the annual decimal rate for the account.
rateAnnual = ratePercent / 100;
// Calculate the monthly decimal rate for the account.
rateMonth = rateAnnual / 12;
while (count = 1; count <= 3; count++)
{
}
return 0;
}
Thanks!!!
You can verify if cin
was successful:
double startBal;
while (!(std::cin >> startBal)) {
std::cin.clear();
std::cin.ignore(std::numeric_limits<streamsize>::max(), '\n');
std::cout << "Enter a valid number\n";
}
std::cout << startBal << endl;
Don't forget to #include <limits>
to use std::numeric_limits<streamsize>::max()
.
double x;
std::cout << "Enter a number: ";
std::cin >> x;
while(std::cin.fail())
{
std::cin.clear();
std::cin.ignore(numeric_limits<streamsize>::max(),'\n');
std::cout << "Bad entry. Enter a NUMBER: ";
std::cin >> x;
}
Replace x
and double
with whatever variable name and type you need. And obviously, modify your prompts to whatever is necessary.
What you're asking for is actually quite difficult. The only completely correct way is to read your input as a string, then see if the string is in the right format for a number, and only then convert the string to a number. I think that's quite difficult when you're just a beginner.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.