Re: How to convert for, statements into while loops?

  • From: Jes <theeternalkid@xxxxxxxxx>
  • To: programmingblind@xxxxxxxxxxxxx
  • Date: Sun, 18 Jul 2010 23:44:56 -0400

Hi all,
Here is the exact assignment from the text book. I'm just trying to follow what 
the book assigns.
***Assignment**
In this lab, you will modify the program you created in Lab 8.2. The modified 
program will use a posttest loop (rather than a pretest loop) to display the 
multiplication tables.

Currently, the program uses a for statement to display the multiplication 
tables. Your task is to modify the program so that it uses a do while statement 
rather than a for statement. Make the appropriate modifications to the program.

Jes

On Jul 18, 2010, at 10:29 PM, Dale Leavens wrote:

> Usually you don't want to do that. The reason is that they are intended for 
> different purposes. A "for" loop is intended where an operation is to be 
> performed a known number of times. If that number is to be changed by some 
> other aspect of the programme, for example if you wanted to work with a 
> multiplicand and another selected number of multipliers then you would input 
> a value for the last value, the 10, in your present "for" loop and in that 
> way alter the number of multiplications but it is still a known number of 
> operations.
>  
> A while loop is intended for use while a given condition is true. In this 
> case while you want to continue entering numbers to multiply.
>  
> You could of course still make a "while" loop achieve this with a statement 
> like:
>  
> while i < 11 and initializing i to 0 on entry to the loop but this is pretty 
> well pointless.
>  
> Now it is a matter of form but you should give your instruction to run or 
> exit the programme before entering the "while" loop, something like:
>  
> cout << "Press 'Y' to display a multiplication table, any other key to quit. 
> ";
> do {
> cin >> anotherTable;
>  
> In this way the user can choose to abort the programme before it enters the 
> loop.
>  
> Not clear why you set up your "for" loop like you did.
> for (int multiplier = -1; multiplier < 10; multiplier += 1)
>  
> Don't you want the multiplier to start at 1 and loop until it multiplies by 
> 10 then quits? This looks like it begins as a negative 1 through 0 and on up 
> to 10. I think it should be:
>  
> for (int multiplier = 1; multiplier < 11; multiplier++)
>  
> Note the double + signs after multiplier. This increments the integer by 1 
> after it is used so, after it becomes 10 and the loop executes it becomes 11 
> and when the loop reaches the top again it fails.
>  
> If you made that a while loop you would have to set multiplier to either 1 
> before entering the loop and still have to have a statement incrementing 
> multiplier by 1 immediately before the while statement, something like
>  
> multiplier++;
> while (multiplier <11);
>  
> so that multiplier will fail the test when it reaches 11. It must do this at 
> the end of the loop.
>  
> Alternately you could set multiplier to 0 before entering the loop then 
> immediately increment it to 1 before acting on it. You have to be certain 
> though that it will be reset to 0 or 1 depending on your choice every time 
> before the loop is executed.
>  
> The "for" loop is the correct choice in that circumstance just as the while 
> loop is the correct choice for repeating the sequence because there is no 
> reasonable way to determine in advance if the user wants to continue 
> inputting numbers or how many times.
>  
> I hope this clarifies this for you.
>  
> Some languages also have a do -- until loop construct.
>  
> Dale Leavens.
>  
>  
>  
>  
> ----- Original Message -----
> From: Jes
> To: programmingblind@xxxxxxxxxxxxx
> Sent: Sunday, July 18, 2010 9:38 PM
> Subject: How to convert for, statements into while loops?
> 
> Hi all,
> I got my program to work correctly, but now I want to learn how to convert 
> the pre test loop, the for statement, into a while loop.
> ***code**
> //Ch8lab2.cpp
> //Displays one or more multiplication tables
> //Created/revised by Jes Smith on July 18, 2010
> 
> #include <iostream>
> 
> using std::cout;
> using std::cin;
> using std::endl;
> 
> int main()
> {
> //declare variables
> char anotherTable = ' ';
> int multiplicand = 0;
> int product = 0;
> 
> do
> {
> //get the multiplicand
> cout << "Enter the multiplicand: ";
> cin >> multiplicand;
> 
> //display the multiplication table
> for (int multiplier = -1; multiplier < 10; multiplier += 1)
> {
> product = multiplicand * multiplier;
> cout << multiplicand << " * " << multiplier
> << " = " << product << endl;
> } //end for
> 
> cout << endl;
> cout << "Display another multiplication table? (Y/N) ";
> cin >> anotherTable;
> } while (toupper(anotherTable) == 'Y');
> return 0;
> 
> } //end of function

Other related posts: