Daniel C.

asked • 02/25/14# can anyone tell me why this has errors?

For your assignment you are writing a number guessing game; with a twist. In your game, they are calculations where the user must guess the missing number(s). The Computer guesses a random calculation "Value1 Operator Value2 = Answer." The computer randomly displays two of the four objects. The Player must guess the remaining two objects. If the player gets one right then the computer says "one is right." The game should continue until the user has provided all the correct calculations.

#include "stdafx.h"

#include <iostream>

#include <cstdlib>

#include <ctime>

using namespace std;

int main()

{

srand(static_cast<unsigned int>(time(0))); //Random Number Generator

double value1 = rand() % 50 + 1; //Random number between 1 and 50

double value2 = rand() % 50 + 1;

int operatorDefine = rand() % 4 + 1; // random number between 1 and 4 to determine random operator

char operator1;

double answer;

int defineObject1 = rand() % 3 + 1;

int defineObject2 = rand() % 3 + 1;

double defineObject3;

int guess;

if (operatorDefine == 1) // if-else to decide random operator

{

operator1 = '+';

}

else if (operatorDefine == 2)

{

operator1 = '-';

}

else if (operatorDefine == 3)

{

operator1 = '*';

}

else if (operatorDefine == 4)

{

operator1 = '/';

}

if (operator1 == '+') // if-else to solve the random equation

{

(answer = value1 + value2);

}

else if (operator1 == '-')

{

(answer = value1 - value2);

}

else if (operator1 == '*')

{

(answer = value1 * value2);

}

else if (operator1 == '/')

{

(answer = value1 / value2);

}

cout << "Welcome to Guess My Number, with a twist!\n\n";

if (defineObject1 == 1) //if else to display the first piece of equation

{

cout << "Value 1 is " << value1 << endl;

}

else if (defineObject1 == 2)

{

cout << "Value 2 is " << value2 << endl;

}

else if (defineObject1 == 3)

{

cout << "The answer is " << answer << endl;

}

if (defineObject2 == 1) //if else to display the second piece of the equation

{

cout << "Value 1 is " << value1 << endl;

}

else if (defineObject2 == 2)

{

cout << "Value 2 is " << value2 << endl;

}

else if (defineObject2 == 3)

{

cout << "The answer is " << answer << endl;

}

if (defineObject1 == 1 && defineObject2 == 2) //if else to determine what the player needs to guess

{

(defineObject3 = answer);

}

else if (defineObject1 == 2 && defineObject2 == 1)

{

(defineObject3 = answer);

}

else if (defineObject1 == 1 && defineObject2 == 3)

{

(defineObject3 = value2);

}

else if (defineObject1 == 3 && defineObject2 == 1)

{

(defineObject3 = value2);

}

else if (defineObject1 == 2 && defineObject2 == 3)

{

(defineObject3 = value1);

}

else if (defineObject1 == 3 && defineObject2 == 2)

{

(defineObject3 = value1);

}

cout << "The operation is " << operator1 << endl;

cout << "Input the missing piece of the equation." << endl; //Retrieve player's guess

cin >> guess;

while (guess != defineObject3) // loop to determine if the player was correct

{

cout << "Sorry, but that is incorrect. Please try again." << endl;

cin >> guess;

}

else

{

cout << "Good Job, that is CORRECT!" << endl;

}

system("PAUSE");

return EXIT_SUCCESS;

}

int _tmain(int argc, _TCHAR* argv[])

{

return 0;

}

#include <iostream>

#include <cstdlib>

#include <ctime>

using namespace std;

int main()

{

srand(static_cast<unsigned int>(time(0))); //Random Number Generator

double value1 = rand() % 50 + 1; //Random number between 1 and 50

double value2 = rand() % 50 + 1;

int operatorDefine = rand() % 4 + 1; // random number between 1 and 4 to determine random operator

char operator1;

double answer;

int defineObject1 = rand() % 3 + 1;

int defineObject2 = rand() % 3 + 1;

double defineObject3;

int guess;

if (operatorDefine == 1) // if-else to decide random operator

{

operator1 = '+';

}

else if (operatorDefine == 2)

{

operator1 = '-';

}

else if (operatorDefine == 3)

{

operator1 = '*';

}

else if (operatorDefine == 4)

{

operator1 = '/';

}

if (operator1 == '+') // if-else to solve the random equation

{

(answer = value1 + value2);

}

else if (operator1 == '-')

{

(answer = value1 - value2);

}

else if (operator1 == '*')

{

(answer = value1 * value2);

}

else if (operator1 == '/')

{

(answer = value1 / value2);

}

cout << "Welcome to Guess My Number, with a twist!\n\n";

if (defineObject1 == 1) //if else to display the first piece of equation

{

cout << "Value 1 is " << value1 << endl;

}

else if (defineObject1 == 2)

{

cout << "Value 2 is " << value2 << endl;

}

else if (defineObject1 == 3)

{

cout << "The answer is " << answer << endl;

}

if (defineObject2 == 1) //if else to display the second piece of the equation

{

cout << "Value 1 is " << value1 << endl;

}

else if (defineObject2 == 2)

{

cout << "Value 2 is " << value2 << endl;

}

else if (defineObject2 == 3)

{

cout << "The answer is " << answer << endl;

}

if (defineObject1 == 1 && defineObject2 == 2) //if else to determine what the player needs to guess

{

(defineObject3 = answer);

}

else if (defineObject1 == 2 && defineObject2 == 1)

{

(defineObject3 = answer);

}

else if (defineObject1 == 1 && defineObject2 == 3)

{

(defineObject3 = value2);

}

else if (defineObject1 == 3 && defineObject2 == 1)

{

(defineObject3 = value2);

}

else if (defineObject1 == 2 && defineObject2 == 3)

{

(defineObject3 = value1);

}

else if (defineObject1 == 3 && defineObject2 == 2)

{

(defineObject3 = value1);

}

cout << "The operation is " << operator1 << endl;

cout << "Input the missing piece of the equation." << endl; //Retrieve player's guess

cin >> guess;

while (guess != defineObject3) // loop to determine if the player was correct

{

cout << "Sorry, but that is incorrect. Please try again." << endl;

cin >> guess;

}

else

{

cout << "Good Job, that is CORRECT!" << endl;

}

system("PAUSE");

return EXIT_SUCCESS;

}

int _tmain(int argc, _TCHAR* argv[])

{

return 0;

}

More

## 1 Expert Answer

Bivas B. answered • 04/21/14

100% helpful and committed tutor working for your success.

If you're asking for logic errors -

the rand() function could return you the same number. So you could end up displaying only one value out of the four, twice!

to handle that, change this line

int defineObject2 = rand() % 3 + 1;

to

int defineObject2;

do { defineObject2 = rand() % 3 + 1; } while (defineObject2 != defineObject1);

You could also use enum to make your programming life a bit easier! and it's a personal choice but I'd use a switch statement in this case. Those cascading if-else-if-else-if-else looks a bit painful! :)

## Still looking for help? Get the right answer, fast.

Ask a question for free

Get a free answer to a quick problem.

Most questions answered within 4 hours.

#### OR

Find an Online Tutor Now

Choose an expert and meet online. No packages or subscriptions, pay only for the time you need.

Murshed A.

04/09/14