Problem with Functions

Hey guys. I just started learning about functions in my class recently. I've been getting some really strange error messages when I try to compile. I can't even decipher what it's saying really. If someone could please point me in the right direction, I'd really appreciate it.

The assignment is to rewrite our Rock, Paper, Scissors game by incorporating some Functions my professor listed. I'm sure there's a lot wrong with it, but I've truly done my best to research it and figure it out on my own. Thanks again.

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
#include <iostream>
#include <iomanip>
#include <stdlib.h>
#include <time.h>
#include <stdio.h>
using namespace std;  

//Prototype declarations
int getPlayerTurn ();
int doComputerTurn ();
void showOutcome (int, int);

// The main function
int main () {
int choice = getPlayerTurn();
int comp = doComputerTurn();
showOutcome(choice, comp);
            }


//
// getPlayerTurn
//    Reads in the players choice and displays what they chose.
//
// Parameters:
//    There are no parameters for this function.
// Returns:
//    Returns the players choice.
//
int getPlayerTurn (){
   int choice;
   cout << "************ Rock, Paper, Scissors ************ \n";
   cout << "Enter 1 for Rock, 2 for Paper, 3 for Scissors: ";
   cin >> choice;
   cout << "You chose ";
       if (choice == 1)
        cout << "Rock. \n";
   else if (choice == 2)
        cout << "Paper. \n";
   else if (choice == 3)
        cout << "Scissors. \n";
   return (choice);
                    }
// doComputerTurn
//    Calculates the computer turn and displays what it chose.
//
// Parameters:
//    There are no parameters for this function.
//
// Returns:
//    Returns the computers choice.
//
int doComputerTurn(){
   int comp;
   comp = rand() % 3 + 1;
   cout << "The computer chose ";
   if (comp == 1)
        cout << "Rock. \n";
   else if (comp == 2)
        cout << "Paper. \n";
   else if (comp == 3)
        cout << "Scissors. \n";
   return (comp);
                    }
//
// showOutcome
//    Calculates and displays the winner of the current game as well as the current score.
//
// Parameters:
//    choice - The game selection made by the player.
//    comp - The game selection made by the computer.
//
// Returns:
//    This function does not have a return value.
//
void showOutcome (int choice, int comp){
int lose=0, win=0,tie=0;
   if (choice == comp){
        cout << "It's a tie! \n";
        tie++;
                      }
   else if ((choice == 1)&&(comp == 2)){
        cout << "Paper beats Rock, you lose. \n";
        lose++;
                                      }
   else if ((choice == 1)&&(comp == 3)){
        cout << "Rock beats Scissors, you win! \n" ;
        win++;
                                      }
   else if ((choice == 2)&&(comp == 1)){
        cout << "Paper beats Rock, you win! \n" ;
        win++;
                                      }
   else if ((choice == 2)&&(comp == 3)){
        cout << "Scissors beats Paper, you lose. \n";
        lose++;
                                      }
   else if ((choice == 3)&&(comp == 1)){
        cout << "Rock beats Scissors, you lose. \n";
        lose++;
                                      }
   else if ((choice == 3)&&(comp == 2)){
        cout << "Scissors beats Paper, you win! \n";
        win++;
                                   }
cout << "Wins: " << win << "   Ties: " << tie << "   Losses: " << lose << endl;
                                        }
So what exactly is wrong, or why do you think it's wrong?
I don't see a problem. It works on the online compiler.
BTW. You could make your code much more readable by introducing constants like:
1
2
3
const int ROCK = 1;
const int PAPER = 2;
const int SCISSOR = 3;


The you can write
else if ((choice == ROCK)&&(comp == PAPER))
Does anyone have an idea as to why this might compile for everyone else on the Forums but not for me?
What compiler do you use? Do you get any errors?
Last edited on
Topic archived. No new replies allowed.