====== Control Structures: Repetition examples ======
===== The while statement =====
// This program counts to an upper limit
#include
using namespace std;
int main()
{
const int UPPER_LIMIT = 5;
int num = 1;
while (num <= UPPER_LIMIT)
{
cout << num << endl;
num = num + 1;
}
return 0;
}
===== increment operator =====
// This program counts to an upper limit
#include
using namespace std;
int main()
{
int num = 10;
cout << num << endl;
num++;
return 0;
}
===== Repetition code patterns =====
==== Counter-controlled repetition ====
// This program counts to an upper limit
#include
using namespace std;
int main()
{
const int UPPER_LIMIT = 5;
int num = 1; // initialize the counter
while (num <= UPPER_LIMIT) // test the count
{
cout << num << endl;
num++; // increment the counter
}
return 0;
}
==== Sentinel-controlled repetition ====
// This program determines whether test scores are passing marks.
#include
using namespace std;
int main()
{
const unsigned int PASSING_SCORE = 60;
int score;
cout << "Enter a test scrore and I will tell you if it is a passing mark." << endl;
cout << "Enter -1 to quit: ";
cin >> score;
while (score != -1)
{
if (score >= PASSING_SCORE)
{
cout << score << ": PASS" << endl;
}
else
{
cout << score << ": FAIL" << endl;
}
cout << "Enter a test scrore and I will tell you if it is a passing mark." << endl;
cout << "Enter -1 to quit: ";
cin >> score;
}
return 0;
}
==== Input validation ====
// Simple example of input validation.
#include
using namespace std;
int main()
{
const int LOWER_BOUND = 0;
const int UPPER_BOUND = 100;
int num;
cout << "Enter a number between " << LOWER_BOUND
<< " and " << UPPER_BOUND << ": ";
cin >> num;
// Fall through loop only if input is valid.
while (num < LOWER_BOUND || num > UPPER_BOUND)
{
cout << "Enter a number between " << LOWER_BOUND
<< " and " << UPPER_BOUND << ": ";
cin >> num;
}
cout << "Congratulations, you can follow directions." << endl;
return 0;
}
==== Running total ====
// Simple running total example.
// Total all the integers between a lower and an upper bound.
#include
using namespace std;
int main()
{
const int LOWER_BOUND = 0;
const int UPPER_BOUND = 10;
int num = LOWER_BOUND; // counter
int sum = 0; // accumulator
while (num <= UPPER_BOUND)
{
sum += num; // add the new value to the accumulator
num++;
}
cout << "The sum of integers from " << LOWER_BOUND
<< " to " << UPPER_BOUND
<< " is " << sum << endl;
return 0;
}
===== The for statement =====
// This program counts to an upper limit using a for structure.
#include
using namespace std;
int main()
{
const int UPPER_LIMIT = 5;
int num;
for (num = 1; num <=UPPER_LIMIT; num++)
{
cout << num << endl;
}
return 0;
}
===== Nested loops =====
// This program does some graphics with nested loops.
#include
using namespace std;
int main()
{
const int NUM_ROWS = 5;
const int NUM_COLUMNS = 3;
for (int row = 1; row <= NUM_ROWS; row++)
{
for (int column = 1; column <= NUM_COLUMNS; column++)
{
cout << "*";
}
cout << endl;
}
return 0;
}
===== break and continue =====
// Print out a list of powers of 2.
#include
#include
using namespace std;
int main()
{
const int UPPER_LIMIT = 100;
int num = 1; // counter
char choice; // used to get user input
while (num <= UPPER_LIMIT)
{
cout << "2 to the " << num << " power is " << pow(2, num) << endl;
cout << "Should I go on? [y/N]: ";
cin >> choice;
if (choice == 'N' || choice == 'n')
break; // (try replacing with 'continue')
num++;
}
cout << "Goodbye!" << endl;
return 0;
}