Unexpected output from function

closed account (1Ck93TCk)
Hello,
I have this simple math program with multiple functions. The purpose of the program is just so I can better understand how functions work.

If I isolate one if statement and its corresponding function, it works fine. But if I add another function, everything becomes unexpected and the subtraction function performs addition, etc.

Please help me out. I've been looking at this program for hours and I can't figure out why it's acting this way.

Thank you!

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
 #include <iostream>

using namespace std;

void addition(int first, int second, int &result, char symbol);
void subtraction(int first, int second, int &result, char symbol);
void multiply(int first, int second, int &result, char symbol);
void divide(int first, int second, int &result, char symbol);
void modulo(int first, int second, int &result, char symbol);

int main()
{
    int first = 0;
    int second = 0;
    int result = 0;
    char symbol;


    cout << "Enter an integer: ";
    cin >> first;
    cout << "Enter another integer: ";
    cin >> second;
    cout << "Select an operator(+, -, * , /, %): ";
    cin >> symbol;

    if(symbol = '+')
       addition(first, second, result, symbol);

    if(symbol = '-')
        subtraction(first, second, result, symbol);

    if(symbol = '*')
        multiply(first, second, result, symbol);

    if(symbol = '/')
        divide(first, second, result, symbol);

    if(symbol = '%')
        modulo(first, second, result, symbol);


    cout << "The result is " << result << "." << endl;
}

void addition(int first, int second, int &result, char symbol)
{
    result = first + second;
}

void subtraction(int first, int second, int &result, char symbol)
{
    result = first - second;
}

void multiply(int first, int second, int &result, char symbol)
{
    result = first * second;
}

void divide(int first, int second, int &result, char symbol)
{
    result = first / second;
}

void modulo(int first, int second, int &result, char symbol)
{
    result = first % second;
}
if(symbol = '+') should be if(symbol == '+'). Checking for equality is ==.

You are assigning a value to symbol, which is always treated as being true.

You need to change all of the checks in your if statements.
Last edited on
closed account (1Ck93TCk)
And it works! Thank your for the quick response!
Topic archived. No new replies allowed.