DaniWeb IT Discussion Community

DaniWeb IT Discussion Community (http://www.daniweb.com/forums/index.php)
-   C++ (http://www.daniweb.com/forums/forum8.html)
-   -   How can I add a loop for this code (http://www.daniweb.com/forums/thread160285.html)

UsedToBe Dec 1st, 2008 6:09 pm
Re: How can I add a loop for this code
 
I dont know if you already figure it out, but here it is...

.../ your code
int addAnswer = add1 + add2;
int subAnswer = sub1- sub2;
int multiplyAnswer = multiply1 * multiply2;
int divAnswer = div1 / div2;

choice=6; // this is what I added

while (choice!=5) { // the loop
check the program, if you notice everytime the user makes a choice, at the end you terminate the program, what you need to do is to initialize "choice =6" and delete "return 0" for everyoption...

check this out:

../ your code showing the menu
if (choice==1)
{
cout << setw (6) << add1 << endl;
cout << "+ ";
cout << setw (4) << add2 << endl;
cout << "------";
cout << "\n";
cin >> input;
cout << "\n";
if
(input == addAnswer)
cout << "Congratulations\n";
else
cout << "That is incorrect,\nThe correct answer is: " << addAnswer;
cout << "\n";
choice=6;
}

else if (choice==2)
{
cout << setw (6) << sub1 << endl;
cout << "- ";
cout << setw (4) << sub2 << endl;
cout << "------";
cout << "\n";
cin >> input;
cout << "\n";
if
(input == subAnswer)
cout << "Congratulations\n";
else
cout << "That is incorrect,\nThe correct answer is: " << subAnswer;
cout << "\n";
choice=6; }

else if (choice==3)
{
cout << setw (6) << multiply1 << endl;
cout << "* ";
cout << setw (4) << multiply2 << endl;
cout << "------";
cout << "\n";
cin >> input;
cout << "\n";
if
(input == multiplyAnswer)
cout << "Congratulations\n";
else
cout << "That is incorrect,\nThe correct answer is: " << multiplyAnswer;
cout << "\n";
choice=6; }

else if (choice==4)
{
cout << setw (6) << div1 << endl;
cout << "/ ";
cout << setw (4) << div2 << endl;
cout << "------";
cout << "\n";
cin >> input;
cout << "\n";
if
(input == divAnswer)
cout << "Congratulations\n";
else
cout << "That is incorrect,\nThe correct answer is: " << divAnswer;
cout << "\n";
choice=6; }

else if (choice==5)
{cout << "Thanks for playing\n";}

else
{cout << "You can only select options 1-5, run the program again and select a option 1-5\n";}


} // end of while

davids2004 Dec 1st, 2008 6:46 pm
Re: How can I add a loop for this code
 
Quote:

Originally Posted by UsedToBe (Post 748335)
I dont know if you already figure it out, but here it is...

.../ your code
        int addAnswer = add1 + add2;
        int subAnswer = sub1- sub2;
        int multiplyAnswer = multiply1 * multiply2;
        int divAnswer = div1 / div2;

        choice=6; // this is what I added
   
    while (choice!=5) {        // the loop
check the program, if you notice everytime the user makes a choice, at the end you terminate the program, what you need to do is to initialize "choice =6" and delete "return 0" for everyoption...

check this out:

../ your code showing the menu
if (choice==1)
{
        cout << setw (6) << add1 << endl;
        cout << "+ ";
        cout << setw (4) << add2 << endl;
        cout << "------";
        cout << "\n";
        cin >> input;
        cout << "\n";
if
        (input == addAnswer)
        cout << "Congratulations\n";       
else
        cout << "That is incorrect,\nThe correct answer is: " << addAnswer;
        cout << "\n";
choice=6;       
}
 
else if (choice==2)
{
        cout << setw (6) << sub1 << endl;
        cout << "- ";
        cout << setw (4) << sub2 << endl;
        cout << "------";
        cout << "\n";
        cin >> input;
        cout << "\n";
if
        (input == subAnswer)
        cout << "Congratulations\n";       
else
        cout << "That is incorrect,\nThe correct answer is: " << subAnswer;
        cout << "\n";
choice=6;        }
   
else if (choice==3)
{
        cout << setw (6) << multiply1 << endl;
        cout << "* ";
        cout << setw (4) << multiply2 << endl;
        cout << "------";
        cout << "\n";
        cin >> input;
        cout << "\n";
if
        (input == multiplyAnswer)
        cout << "Congratulations\n";       
else
        cout << "That is incorrect,\nThe correct answer is: " << multiplyAnswer;
        cout << "\n";
choice=6;        }
   
else if (choice==4)
{
        cout << setw (6) << div1 << endl;
        cout << "/ ";
        cout << setw (4) << div2 << endl;
        cout << "------";
        cout << "\n";
        cin >> input;
        cout << "\n";
if
        (input == divAnswer)
        cout << "Congratulations\n";       
else
        cout << "That is incorrect,\nThe correct answer is: " << divAnswer;
        cout << "\n";
choice=6;        }
                       
else if (choice==5)
        {cout << "Thanks for playing\n";}

else
        {cout << "You can only select options 1-5, run the program again and select a option 1-5\n";}
   

} // end of while


Ok I tried to do this and add the choice=6 and deleted the return 0 and nothing.


#include <iostream>
#include <cstdlib>
#include <iomanip>
#include <ctime>

using namespace std;


int main ()

{
        srand((unsigned)time(0));
        int add1, add2, sub1, sub2;
        int multiply1, multiply2, div1, div2;
        int choice, input;
        add1 = (rand()%500)+1, add2 = (rand()%500)+1;
        sub1 = (rand()%500)+1, sub2 = (rand()%98)+1;
        multiply1 = (rand()%98)+1, multiply2 = (rand()%8)+1;
        div1 = (rand()%500)+1, div2 = (rand()%8)+1;
        int addAnswer = add1 + add2, subAnswer = sub1- sub2;
        int multiplyAnswer = multiply1 * multiply2, divAnswer = div1 / div2;

               
               

        //Display the menu and get the user's choice

                cout << "        Geometry Calculator \n\n";
                cout << "1. Addition\n";
                cout << "2. Subtraction\n";
                cout << "3. Multiplication\n";
                cout << "4. Division\n";
                cout << "5. Quit\n";
                cout << "\n";

                cout <<"Enter your choice (1-5): ";
                cin >> choice;
                cout << "\n";


while (choice!=5)       
                               
if (choice==1)
{
        cout << setw (6) << add1 << "\n";
        cout << "+ ";
        cout << setw (4) << add2 << "\n";
        cout << "------";
        cout << "\n";
        cin >> input;
        cout << "\n";
if
        (input == addAnswer)
        cout << "Congratulations\n";       
else
        cout << "That is incorrect,\nThe correct answer is: " << addAnswer;
        cout << "\n";
        cout << "\n";
choice=6;
}

else if (choice==2)
{
        cout << setw (6) << sub1 << "\n";
        cout << "- ";
        cout << setw (4) << sub2 << "\n";
        cout << "------";
        cout << "\n";
        cin >> input;
        cout << "\n";
if
        (input == subAnswer)
        cout << "Congratulations\n";       
else
        cout << "That is incorrect,\nThe correct answer is: " << subAnswer;
        cout << "\n";
        cout << "\n";
choice=6; }
   
else if (choice==3)
{
        cout << multiply1;
        cout << " * ";
        cout << multiply2 << "=";
        cin >> input;
        cout << "\n";
if
        (input == multiplyAnswer)
        cout << "Congratulations\n";       
else
        cout << "That is incorrect,\nThe correct answer is: " << multiplyAnswer;
        cout << "\n";
        cout << "\n";
choice=6; }
   
else if (choice==4)
{
        cout << div1;
        cout << "/";
        cout << div2 << "=";
        cin >> input;
        cout << "\n";
if
        (input == divAnswer)
        cout << "Congratulations\n";       
else
        cout << "That is incorrect,\nThe correct answer is: " << divAnswer;
        cout << "\n";
        cout << "\n";
choice=6; }

else if (choice==5)
{
        cout << "Thanks for playing\n";
        cout << "\n";
        cout << "\n";
}


else
        {cout << "You can only select options 1-5, run the program again and select a option 1-5\n";}

 
   
return 0;


}

davids2004 Dec 1st, 2008 9:51 pm
Re: How can I add a loop for this code
 
Ok I got the loop to work now why am I not generating random numbers each time. It just displays the same numbers each time a selection is picked. It will display random numbers when I re run the program but now if I run it again with the loop.

#include <iostream>
#include <cstdlib>
#include <iomanip>
#include <ctime>

using namespace std;


int main ()
{
        srand((unsigned)time(0));
        int add1, add2, sub1, sub2;
        int multiply1, multiply2, div1, div2;
        int choice, input;
        add1 = (rand()%500)+1, add2 = (rand()%500)+1;
        sub1 = (rand()%500)+1, sub2 = (rand()%98)+1;
        multiply1 = (rand()%98)+1, multiply2 = (rand()%8)+1;
        div1 = (rand()%500)+1, div2 = (rand()%8)+1;
        int addAnswer = add1 + add2, subAnswer = sub1- sub2;
        int multiplyAnswer = multiply1 * multiply2, divAnswer = div1 / div2;
               
               
do
{        //Display the menu and get the user's choice

                cout << "        Math Tutor \n\n";
                cout << "1. Addition\n";
                cout << "2. Subtraction\n";
                cout << "3. Multiplication\n";
                cout << "4. Division\n";
                cout << "5. Quit\n";
                cout << "\n";

                cout <<"Enter your choice (1-5): ";
                cin >> choice;
                cout << "\n";

        //Validate the menu selection
        while (choice < 1 || choice > 5)
        {
        cout << "That is not a valid option\n";
        cout <<"Enter your choice (1-5): ";
                cin >> choice;
                cout << "\n";
        }


       
                               
if (choice==1)
{
        cout << setw (6) << add1 << "\n";
        cout << "+ ";
        cout << setw (4) << add2 << "\n";
        cout << "------";
        cout << "\n";
        cin >> input;
        cout << "\n";
if
        (input == addAnswer)
        cout << "Congratulations\n";       
else
        cout << "That is incorrect,\nThe correct answer is: " << addAnswer;
        cout << "\n";
        cout << "\n";
}

else if (choice==2)
{
        cout << setw (6) << sub1 << "\n";
        cout << "- ";
        cout << setw (4) << sub2 << "\n";
        cout << "------";
        cout << "\n";
        cin >> input;
        cout << "\n";
if
        (input == subAnswer)
        cout << "Congratulations\n";       
else
        cout << "That is incorrect,\nThe correct answer is: " << subAnswer;
        cout << "\n";
        cout << "\n";
}
   
else if (choice==3)
{
        cout << multiply1;
        cout << " * ";
        cout << multiply2 << "=";
        cin >> input;
        cout << "\n";
if
        (input == multiplyAnswer)
        cout << "Congratulations\n";       
else
        cout << "That is incorrect,\nThe correct answer is: " << multiplyAnswer;
        cout << "\n";
        cout << "\n";
}
   
else if (choice==4)
{
        cout << div1;
        cout << "/";
        cout << div2 << "=";
        cin >> input;
        cout << "\n";
if
        (input == divAnswer)
        cout << "Congratulations\n";       
else
        cout << "That is incorrect,\nThe correct answer is: " << divAnswer;
        cout << "\n";
        cout << "\n";
}

else if (choice==5)
{
        cout << "Thanks for playing\n";
        cout << "\n";
        cout << "\n";
}

} while (choice !=5);
   
return 0;


}

Murtan Dec 1st, 2008 11:53 pm
Re: How can I add a loop for this code
 
Short answer:

Move the
do {
from line 23/24 in front of the random stuff starting on line 15.

Longer answer:
If you were to break each problem type out into a function, you could call it from the
if (choice ==
stuff. The function could then generate the random values for the problem.

This second method would have the added advantage of having everything about the problem all in one place. (The random parameters, the display, the input and the validation.) Also, your code wouldn't be bothering to generate random problems that will never be used.

Sample add method:
void add()
{
  int add1 = (rand()%500)+1;
  int add2 = (rand()%500)+1;
  int addAnswer = add1 + add2;

  cout << setw (6) << add1 << "\n";
  cout << "+ ";
  cout << setw (4) << add2 << "\n";
  cout << "------";
  cout << "\n";
  cin >> input;
  cout << "\n";
  if (input == addAnswer)
      cout << "Congratulations\n";
  else
      cout << "That is incorrect,\nThe correct answer is: " << addAnswer;
  cout << "\n";
  cout << "\n";
}

davids2004 Dec 2nd, 2008 11:41 am
Re: How can I add a loop for this code
 
Quote:

Originally Posted by Murtan (Post 748503)
Short answer:

Move the
do {
from line 23/24 in front of the random stuff starting on line 15.

Longer answer:
If you were to break each problem type out into a function, you could call it from the
if (choice ==
stuff. The function could then generate the random values for the problem.

This second method would have the added advantage of having everything about the problem all in one place. (The random parameters, the display, the input and the validation.) Also, your code wouldn't be bothering to generate random problems that will never be used.

Sample add method:
void add()
{
  int add1 = (rand()%500)+1;
  int add2 = (rand()%500)+1;
  int addAnswer = add1 + add2;

  cout << setw (6) << add1 << "\n";
  cout << "+ ";
  cout << setw (4) << add2 << "\n";
  cout << "------";
  cout << "\n";
  cin >> input;
  cout << "\n";
  if (input == addAnswer)
      cout << "Congratulations\n";
  else
      cout << "That is incorrect,\nThe correct answer is: " << addAnswer;
  cout << "\n";
  cout << "\n";
}

So would I need to create a function for each problem?

davids2004 Dec 2nd, 2008 11:46 am
Re: How can I add a loop for this code
 
Murtan,

I used your short answer method as we are just starting to learn about functions.

Thanks and problem solved

#include <iostream>
#include <cstdlib>
#include <iomanip>
#include <ctime>

using namespace std;


int main ()
{
        srand((unsigned)time(0));
        int add1, add2, sub1, sub2;
        int multiply1, multiply2, div1, div2;
        int choice, input;
        do {add1 = (rand()%500)+1, add2 = (rand()%500)+1;
        sub1 = (rand()%500)+1, sub2 = (rand()%98)+1;
        multiply1 = (rand()%98)+1, multiply2 = (rand()%8)+1;
        div1 = (rand()%500)+1, div2 = (rand()%8)+1;
        int addAnswer = add1 + add2, subAnswer = sub1- sub2;
        int multiplyAnswer = multiply1 * multiply2, divAnswer = div1 / div2;


        //Display the menu and get the user's choice

        cout << "        Math Tutor \n\n";
        cout << "1. Addition\n";
        cout << "2. Subtraction\n";
        cout << "3. Multiplication\n";
        cout << "4. Division\n";
        cout << "5. Quit\n";
        cout << "\n";

        cout <<"Enter your choice (1-5): ";
        cin >> choice;
        cout << "\n";

        //Validate the menu selection
        while (choice < 1 || choice > 5)
        {
                cout << "That is not a valid option\n";
                cout <<"Enter your choice (1-5): ";
                cin >> choice;
                cout << "\n";
        }

        if (choice==1)
        {
                cout << setw (6) << add1 << "\n";
                cout << "+ ";
                cout << setw (4) << add2 << "\n";
                cout << "------";
                cout << "\n";
                cin >> input;
                cout << "\n";
                if
                        (input == addAnswer)
                        cout << "Congratulations\n";       
                else
                        cout << "That is incorrect,\nThe correct answer is: " << addAnswer;
                cout << "\n";
                cout << "\n";
        }

        else if (choice==2)
        {
                cout << setw (6) << sub1 << "\n";
                cout << "- ";
                cout << setw (4) << sub2 << "\n";
                cout << "------";
                cout << "\n";
                cin >> input;
                cout << "\n";
                if
                        (input == subAnswer)
                        cout << "Congratulations\n";       
                else
                        cout << "That is incorrect,\nThe correct answer is: " << subAnswer;
                cout << "\n";
                cout << "\n";
        }

        else if (choice==3)
        {
                cout << multiply1;
                cout << " * ";
                cout << multiply2 << "=";
                cin >> input;
                cout << "\n";
                if
                        (input == multiplyAnswer)
                        cout << "Congratulations\n";       
                else
                        cout << "That is incorrect,\nThe correct answer is: " << multiplyAnswer;
                cout << "\n";
                cout << "\n";
        }

        else if (choice==4)
        {
                cout << div1;
                cout << "/";
                cout << div2 << "=";
                cin >> input;
                cout << "\n";
                if
                        (input == divAnswer)
                        cout << "Congratulations\n";       
                else
                        cout << "That is incorrect,\nThe correct answer is: " << divAnswer;
                cout << "\n";
                cout << "\n";
        }

        else if (choice==5)
        {
                cout << "Thanks for playing\n";
                cout << "\n";
                cout << "\n";
        }

        } while (choice !=5);

        return 0;


}

davids2004 Dec 2nd, 2008 11:50 am
Re: How can I add a loop for this code
 
Ok fixed it so it would display the menu again if you do not select a valid option


#include <iostream>
#include <cstdlib>
#include <iomanip>
#include <ctime>

using namespace std;


int main ()
{
        srand((unsigned)time(0));
        int add1, add2, sub1, sub2;
        int multiply1, multiply2, div1, div2;
        int choice, input;
        do {add1 = (rand()%500)+1, add2 = (rand()%500)+1;
        sub1 = (rand()%500)+1, sub2 = (rand()%98)+1;
        multiply1 = (rand()%98)+1, multiply2 = (rand()%8)+1;
        div1 = (rand()%500)+1, div2 = (rand()%8)+1;
        int addAnswer = add1 + add2, subAnswer = sub1- sub2;
        int multiplyAnswer = multiply1 * multiply2, divAnswer = div1 / div2;


        //Display the menu and get the user's choice

        cout << "        Math Tutor \n\n";
        cout << "1. Addition\n";
        cout << "2. Subtraction\n";
        cout << "3. Multiplication\n";
        cout << "4. Division\n";
        cout << "5. Quit\n";
        cout << "\n";

        cout <<"Enter your choice (1-5): ";
        cin >> choice;
        cout << "\n";

        //Validate the menu selection
        while (choice < 1 || choice > 5)
        {
                cout << "That is not a valid option\n";
                cout <<"Please select again\n\n ";
                cout << "        Math Tutor \n\n";
                cout << "1. Addition\n";
                cout << "2. Subtraction\n";
                cout << "3. Multiplication\n";
                cout << "4. Division\n";
                cout << "5. Quit\n";
                cout << "\n";

                cout <<"Enter your choice (1-5): ";
                cin >> choice;
                cout << "\n";
        }

        if (choice==1)
        {
                cout << setw (6) << add1 << "\n";
                cout << "+ ";
                cout << setw (4) << add2 << "\n";
                cout << "------";
                cout << "\n";
                cin >> input;
                cout << "\n";
                if
                        (input == addAnswer)
                        cout << "Congratulations\n";       
                else
                        cout << "That is incorrect,\nThe correct answer is: " << addAnswer;
                cout << "\n";
                cout << "\n";
        }

        else if (choice==2)
        {
                cout << setw (6) << sub1 << "\n";
                cout << "- ";
                cout << setw (4) << sub2 << "\n";
                cout << "------";
                cout << "\n";
                cin >> input;
                cout << "\n";
                if
                        (input == subAnswer)
                        cout << "Congratulations\n";       
                else
                        cout << "That is incorrect,\nThe correct answer is: " << subAnswer;
                cout << "\n";
                cout << "\n";
        }

        else if (choice==3)
        {
                cout << multiply1;
                cout << " * ";
                cout << multiply2 << "=";
                cin >> input;
                cout << "\n";
                if
                        (input == multiplyAnswer)
                        cout << "Congratulations\n";       
                else
                        cout << "That is incorrect,\nThe correct answer is: " << multiplyAnswer;
                cout << "\n";
                cout << "\n";
        }

        else if (choice==4)
        {
                cout << div1;
                cout << "/";
                cout << div2 << "=";
                cin >> input;
                cout << "\n";
                if
                        (input == divAnswer)
                        cout << "Congratulations\n";       
                else
                        cout << "That is incorrect,\nThe correct answer is: " << divAnswer;
                cout << "\n";
                cout << "\n";
        }

        else if (choice==5)
        {
                cout << "Thanks for playing\n";
                cout << "\n";
                cout << "\n";
        }

        } while (choice !=5);

        return 0;


}


All times are GMT -4. The time now is 5:41 pm.

Forum system based on vBulletin Copyright ©2000 - 2009, Jelsoft Enterprises Ltd.
©2003 - 2009 DaniWeb® LLC