CSCI 240 - Loops Worksheet 1

dowhile & while

C++ Solutions

Here are some solutions. THESE ARE NOT THE ONLY SOLUTIONS.

1.	DOWHILE				
 int number_in,				VARIABLES USED
 sum = 0;
- - - - - - - - - - - - - -
 do
   {
   cin >> number_in;		TEST VARIABLE = VALUE
   sum = sum + number_in;
   }
 while (number_in != 0);		CONDITION
 cout << "sum is " << sum;
NOTE:  This dowhile only works because the end marker is zero. See #2.
	WHILE
  int number_in,			VARIABLES USED
      sum = 0;

- - - - - - - - - - - - - - - -

  cin >> number_in;		TEST VARIABLE = VALUE
  while (number_in != 0)		CONDITION
    {
    sum = sum + number_in;
    cin >> number_in;		TEST VARIABLE = NEW VALUE
    }
  cout << "sum is " << sum;
2.	DOWHILE
  int number_in,
      sum = 0;
- - - - - - - - - - - - - - -
  do
    {
    cin >> number_in;
    if (number_in == -1)		NEED TO BREAK OUT BEFORE
      {					ADDING IN THE END MARKER
       break;
      }
    sum = sum + number_in;
    }
  while (1);
  cout << "sum is " << sum;
NOTE:  This dowhile needed an extra if structure.
			WHILE
  int number_in,
      sum = 0;
- - - - - - - - - - - - -
  cin >> number_in;
  while (number_in != -1)
    {
    sum = sum + number_in;
    cin >> number_in;
    }
  cout << "sum is " << sum;
but the while structure is the same as in #1.
3a.	DOWHILE
  string str1;
 - - - - - - - - - - - - - - - - - - - - - -
  do
    {
    cin >> str1;			TEST VARIABLE = VALUE
    cout << "you have entered " << str1;
    }
  while (str1 != "EXIT" &&
         str1 != "Exit" &&		CONDITION
         str1 != "exit");
	WHILE
  string str1;
- - - - - - - - - - - - - - - - - - - - - - 
  cin >> str1;			TEST VARIABLE = VALUE
  while (!StringEqual(str1,"EXIT") &&
         !StringEqual(str1,"Exit") &&		CONDITION
         !StringEqual(str1,"exit"))
    {
    cout << "you have entered " << str1;
    cin >> str1;			TEST VARIABLE = NEW VALUE
    }
  cout << "you have entered " << str1;
3b.	DOWHILE
  string str1;
- - - - - - - -- - - - - - - - - - - - 
  do
    {
    cin >> str1;
    if (str1 == "EXIT") ||
        str1 == "Exit") ||
        str1 == "exit"))
      {
       break;
      }
    cout << "you have entered " << str1;
    }
  while (1);
NOTE the similarity to #2.
	WHILE
  string str1;
- - - - - - - - - - - - - - - - - - - - - -  - 
  cin >> str1;
  while (str1 != "EXIT" && str1 != "Exit" &&
         str1 != "exit")
    {
    cout << "you have entered " << str1;
    cin >> str1;
    }
4.	DOWHILE
  int number,
      sum = 0;
- - - - - - - - - - - - -
  number = 6;			INITIAL VALUE IS BEFORE THE LOOP
  do
    {
    sum = sum + number;
    number++;			TEST VARIABLE = VALUE
    }
  while (number < 26);		CONDITION COULD BE (number <= 25)
  cout << "sum is " << sum;
	WHILE
  int number,
      sum = 0;
- - - - - - - - - - - - - - - -
  number = 6;			TEST VARIABLE = VALUE
  while (number < 26)			CONDITION
    {
    sum = sum + number;
    number++;			TEST VARIABLE = NEW VALUE
    }
  cout << "sum is " << sum;
5.	DOWHILE
  int    count=0;
  double score,
         average,
         sum = 0.0;

- - - - - - - - - - - - - - - -
  do
    {
    cin >> score;
    sum = sum + score;
    count++;
    }
  while (count < 10);		NOTE: < NOT <=. WHY?
  average = sum / count;
  cout << "average is " << average;
	WHILE
  int    count=0;
  double score,
         average,
         sum = 0.0;
- - - - - - - - - - - - - - - -
  cin >> score;
  while (count < 11)		CONDITION COULD BE (count <= 10)
    {
    sum = sum + score;
    count++;
    cin >> score;
    }
  average = sum / count;	NOTE: CALCULATED AFTER LOOP
  cout << "average is " << average;
6.	DOWHILE
  int    count=0;
  double score,
         average,
         sum = 0.0;

- - - - - - - - - - - - - -
  do
    {
    cin << score;
    if (score == -1)
      {
      break;
      }
    sum = sum + score;
    count++;
    }
  while (1);
  average = sum / count;
  cout << "average is " << average;
	WHILE
  int    count=0;
  double score,
         average,
         sum = 0.0;
-- - - - - - - - - - - - - - - -- 
  cin >> score;
  while (score != -1)
    {
    sum = sum + score;
    count++;
    cin << score;
    }
  average = sum / count;
  cout << "average is " << average;

NOTE IN WHICH SITUATIONS THE WHILE HAS LESS CODE THAN THE DOWHILE.