need help debugging 'who wants to be a millionaire' program

Hello,

I am stuck and I know I am missing something. I want my program to add all the points a user gets as well as recording how many correct answers. All it does now is print 0 for correct answers even if you get some right and prints a large number like 448547 for totalPoints. Any feedback is appreciated, Thanks!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
#include <iostream>
#include <cstdlib>
using namespace std;


void printQuestion (string question,
                    string a,
                    string b,
                    string c,
                    string d)
{
    cout << "Question: " << question << endl;
    cout << "Choices:" << endl;
    cout << a << endl;
    cout << b << endl;
    cout << c << endl;
    cout << d << endl;
}
int askQuestion (string question,
                 string a,
                 string b,
                 string c,
                 string d,
                 string correct,
                 int points,
                 int totalPoints,
                 int correctAnswers)
{


    string answer;
    cout << "Answer: ";
    cin >> answer;


    while (answer!=a && answer!=b && answer!=c && answer!=d){
        cout << "That wasn't a correct input.  Try again!" << endl;
        cout << "Answer: ";
        cin >> answer;
        }

        if (answer==correct){
            cout << "________" << endl;
            cout << endl;
            cout << "CORRECT!" << endl;
            cout << endl;
            cout << "You received " << points << " points!" << endl;
            cout << endl;
            correctAnswers=+1;
            totalPoints=+points;

            //TOTAL POINTS AND CORRECT ANSWERS
    }

    else
        cout << "You are incorrect!  Correct answer was " << correct << "!" << endl;

    cout << endl;
    cout << "Press 'Enter' to continue!" << endl;
    cin.get();
    cin.ignore();
    system("clear");

    return totalPoints, correctAnswers;

}

int main(){

    int totalPoints;
    int correctAnswers;

    cout << "\t\t*********************************************" << endl;
    cout << "\t\t********Who wants to be a Millionaire!*******" << endl;
    cout << "\t\t*********************************************" << endl;
    cout << "\t\t*********************************************" << endl;
    cout << string(4, '\n');


//    int totalScore=+ askQuestion (string question, string a, string b, string c, string d, string correct, int points);

    string question = "How many continents are there?";
    string a= "5";
    string b= "7";
    string c="3";
    string d="9";
    string correct= "7";
    int points=50;

    printQuestion(question, a, b, c, d);
    askQuestion (question,  a, b, c, d,  correct,  points, totalPoints, correctAnswers);

    question = "What is the distance from the sun to the earth? (IN MILLION MILES)";
    a= "150";
    b= "32";
    c= "92";
    d= "63";
    correct= "92";
    points= 100;

    printQuestion(question, a, b, c, d);
    askQuestion (question,  a, b, c, d,  correct,  points, totalPoints, correctAnswers);
    cout << ": " << totalPoints;

    question = "What is the width of San Francisco? (IN KM!)";
    a= "13";
    b= "16";
    c= "12";
    d= "19";
    correct= "19";
    points= 200;

    printQuestion(question, a, b, c, d);
    askQuestion (question,  a, b, c, d,  correct,  points, totalPoints, correctAnswers);



    // DOESNT PRINT OUT CORRECT VALUE
    cout << "You got " << correctAnswers << " out of 3 " << endl;
    cout << "You also made $" << totalPoints << "!" << endl;


    }




Last edited on
Hi.

First you need to initialize totalPoints and correctAnswers to 0.

You can't return two variables from a function like that.
You can use e. g. references:
http://www.cplusplus.com/doc/tutorial/functions/
http://www.cplusplus.com/forum/beginner/18489/
...change return type of askQuestion from int to void, remove that return statement on line 64 and add '&' next to arguments totalPoints and correctAnswers (i. e. ..., int& totalPoints, int& correctAnswers..., lines 26 and 27)

Also it's not =+, it's += if you want to increase value of a variable.
Last edited on
Line 64: You can't return multiple values. askQuestion is an int function. You can only return a single int. The comma operator does not do what you are expecting.

Line 114: You ignore the return value from askQuestion. Why bother returning anything?
correctAnswers is passed by value. It will never be updated in main, resulting in the wrong value being displayed on line 119. Ditto for totalPoints.



Topic archived. No new replies allowed.