#include <iostream>
// prototype for a function that takes no parameters and returns no value
void printSomething();
// prototype for a function that takes no parameters
// and returns a value of type integer
int getAValue();
// prototype for a function that takes two parameters (an int and a float)
// and returns a value of type double
double multiply(int x, float y);
// a main routine calling each of the three functions listed above
int main()
{
int a = 1;
float b = 2.0;
double c;
printSomething();
a = getAValue();
c = multiply(a, b);
return 0;
}
// ===== implementations of the three functions =====
// prototype for a function that takes no parameters and returns no value
void printSomething()
{
std::cout << "Something!" << std::endl;
}
// prototype for a function that takes no parameters
// and returns a value of type integer
int getAValue()
{
// getting the user to type in a value, and return whatever it is
int v;
std::cout << "Please enter an integer value" << std::endl;
std::cin >> v;
return v;
}
// prototype for a function that takes two parameters (an int and a float)
// and returns a value of type double
double multiply(int x, float y)
{
// compute and return the product of x and y
double result = x * y;
return result;
}
|
// an if by itself
if (x == 3) {
// do this if x is 3, otherwise move on to whatever is next
std::cout << "x is 3!" << std::endl;
}
|
// presumed maximum length of a typed line of user input
const int LINELEN = 256;
// variables to hold the numbers th user will enter,
// here we have initialized it to a negative value
float x = -1;
// prompt the user to enter a non-negative number
std::cout << "Please enter a non-negative number" << std::endl;
// read the number into x, use cin.fail() to check if it succeeded
std::cin >> x;
if (std::cin.fail()) {
std::cout << "Sorry, the value entered was not a number, we are discarding the value" << std::endl;
std::cin.clear();
std::cin.ignore(LINELEN,'\n'); // flush to the end of line or 80 characters, whichever comes first
}
// if we reach this case we know they entered numbers,
// but we still need to check for negative values
else if (x < 0) {
std::cout << "You entered a negative value for the number" << std::endl;
}
// if we reach this case then they actually entered valid data!
else {
std::cout << "Your valid non-negative value was " << x << std::endl;
}
|
#include <iostream>
#include <string>
using std::cin;
using std::cout;
using std::endl;
const int LineLen = 80; // max number of input characters to discard on bad input
const float Pi = 3.1415; // our approximation for Pi
// getANumber gets the user to provide a real number that is greater than the specified minimum
// it repeats until the user provides a valid value then returns the valid response
float getANumber(std::string prompt, float minimum);
int main()
{
float response; // the valid value the user eventually provided
// get a number > 3.1415 from the user then display it
response = getANumber("Please enter a number bigger than Pi", Pi);
cout << response << " is indeed bigger than our Pi value, " << Pi << endl << endl;
// get a number > 0 from the user then display it
response = getANumber("Please enter a number bigger than zero", 0);
cout << response << " is indeed bigger than 0" << endl << endl;
}
float getANumber(std::string prompt, float minimum)
{
// we'll start userInput with an invalid value (their input is supposed to be > minimum)
float userInput = minimum;
// show the user the prompt and get their current response
cout << prompt << endl;
cin >> userInput;
// first we must check if their response was a non-number
if (cin.fail()) {
cout << "That was not a number, please try again" << endl << endl;
cin.clear(); // clears the error status on cin's input checking
cin.ignore(LineLen, '\n'); // discards the non-numeric input stuck in the buffer
userInput = getANumber(prompt, minimum); // gets a new value (recursively)
}
// if it got past the cin.fail check then it was a number,
// but we need to check if the number was too small
else if (userInput <= minimum) {
cout << "Sorry, " << userInput << " is not greater than " << minimum;
cout << ", please try again" << endl << endl;
// NOTE: we don't use cin.clear/ignore here because the cin succeeded,
// we just don't like the numeric value the user gave us
userInput = getANumber(prompt, minimum); // gets a new value (recursively)
}
// otherwise it was ok
else {
cout << "Thanks!" << endl << endl;
}
// we now have a valid response, either from the user entering correctly here
// or from the recursive call(s)
return userInput;
}
|