Basic Calculator Code... doesn't work. Help please?

/* This is my code for a basic calculator. Im learning from a book called "Sam's Teach yourself in an hour a day" and I've had it for three days. Can someone look over my code please.*/
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
#include <iostream>
#include <string>
using namespace std;

float FirstNumber = 0.0;
float SecondNumber = 0.0;
string MathSymbol;
float MultResult = FirstNumber * SecondNumber;
float DivResult = FirstNumber / SecondNumber;
float AddResult = FirstNumber + SecondNumber;
float SubResult = FirstNumber - SecondNumber;

int main()
{ 
	cout << "Enter first number: ";
	cin >> FirstNumber;
	cout << "Enter multiplication symbol: ";
	cin >> MathSymbol;
	cout << "Enter second number: ";
	cin >> SecondNumber;
	if (MathSymbol = x)
	{
		Multiplication();
	}
	if (MathSymbol = +)
	{
		Addition();
	}
	if (MathSymbol = -)
	{
		Subtraction();
	}
	if (MathSymbol = /)
	{
		Division();
	}
	return 0;
}

void Multiplication()
{
	cout << FirstNumber << " x " << SecondNumber << "= " << MultResult << endl;
}

void Addition()
{
	cout << FirstNumber << " + " << SecondNumber << "= " << AddResult << endl;
}

void Subtraction()
{
	cout << FirstNumber << " - " << SecondNumber << "= " <<SubResult << endl;
}

void Division()
{
	cout << FirstNumber << " / " << SecondNumber << "= " << DivResult << endl;
}
Last edited on
Hi,

1) You need to include the <iostream> header file which is used for input/output operations.

2) Enclose the single characters in ' ', e.g. '+', '-', etc. Also, you need to decide, are you going to use std::string or char? Pick only one.

3) This

1
2
 
if (MathSymbol = +)

is an assignment, not a comparison. In order to compare two values, you need to use ==
1
2
 
if (MathSymbol == +)
Last edited on
Thank you so much however I am still receiving errors saying the other functions cannot be identified.
This is my revised code:
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
#include <iostream>
using namespace std;

float FirstNumber = 0.0;
float SecondNumber = 0.0;
char MathSymbol;
float MultResult = FirstNumber * SecondNumber;
float DivResult = FirstNumber / SecondNumber;
float AddResult = FirstNumber + SecondNumber;
float SubResult = FirstNumber - SecondNumber;

int main()
{ 
	cout << "Enter first number: ";
	cin >> FirstNumber;
	cout << "Enter multiplication symbol: ";
	cin >> MathSymbol;
	cout << "Enter second number: ";
	cin >> SecondNumber;
	if (MathSymbol == 'x')
	{
		MultiplyNumbers();
	}
	if (MathSymbol == '+')
	{
		AddNumbers();
	}
	if (MathSymbol == '-')
	{
		SubtractNumbers();
	}
	if (MathSymbol == '/')
	{
		DivideNumbers();
	}
	return 0;
}

void MultiplyNumbers()
{
	cout << FirstNumber << " x " << SecondNumber;
	cout << "= " << MultResult << endl;
}

void AddNumbers()
{
	cout << FirstNumber << " + " << SecondNumber;
	cout << "= " << AddResult << endl;
}

void SubtractNumbers()
{
	cout << FirstNumber << " - " << SecondNumber;
	cout << "= " <<SubResult << endl;
}

void DivideNumbers()
{
	cout << FirstNumber << " / " << SecondNumber;
	cout << "= " << DivResult << endl;
}
It's because of missing function prototypes

1
2
3
4
5
6
7
8
9
 
...
float AddResult = FirstNumber + SecondNumber;
float SubResult = FirstNumber - SecondNumber;

void MultiplyNumbers();
void AddNumbers();
void SubtractNumbers();
void DivideNumbers();


Also, compute the values inside every function, otherwise you will always receive 0 as a result.

1
2
3
4
5
6
void MultiplyNumbers()
{
	cout << FirstNumber << " x " << SecondNumber;
	float MultResult = FirstNumber * SecondNumber;
	cout << "= " << MultResult << endl;
}


and so on for the rest of the functions.
I was wondering if anyone can make a calculator shorter then this:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

#include <iostream>
using namespace std;
int main ()
{
float v1, v2; char v3;
while (1)
{
cout <<"\n\n\n";
cin >>v1>>v3>>v2;
if (v3 == '-')  cout << v1 - v2;
if (v3 == 'x' || v3 == '*')  cout << v1*v2;
if (v3 == '+' )  cout <<v1+ v2;
if (v3 == '/' ) cout <<v1/v2;
}
return 0;
}



I know I can make main (); a void type and remove return 0;, but that's not good practice. I can take out using namespace std but would have to use the scope operator, which is more tedious and not common for iostream. I could also take out the loop, but it would not repeat.
I realize the if statements is not economical.
Thank you TheGrayWolf it works now and I can actually understand my mistake.
Although I'm still getting an error saying : one or more multiply defined symbols found.
revised code:
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
#include <iostream>
using namespace std;

float FirstNumber = 0.0;
float SecondNumber = 0.0;
char MathSymbol;
float MultResult = FirstNumber * SecondNumber;
float DivResult = FirstNumber / SecondNumber;
float AddResult = FirstNumber + SecondNumber;
float SubResult = FirstNumber - SecondNumber;

void MultiplyNumbers();
void AddNumbers();
void SubtractNumbers();
void DivideNumbers();

int main()
{ 
	cout << "Enter first number: ";
	cin >> FirstNumber;
	cout << "Enter multiplication symbol: ";
	cin >> MathSymbol;
	cout << "Enter second number: ";
	cin >> SecondNumber;
	if (MathSymbol == 'x')
	{
		void MultiplyNumbers();
	}
	if (MathSymbol == '+')
	{
		void AddNumbers();
	}
	if (MathSymbol == '-')
	{
		void SubtractNumbers();
	}
	if (MathSymbol == '/')
	{
		void DivideNumbers();
	}
	return 0;
}

void MultiplyNumbers()
{
	cout << FirstNumber << " x " << SecondNumber;
	float MultResult = FirstNumber * SecondNumber;
	cout << "= " << MultResult << endl;
}

void AddNumbers()
{
	cout << FirstNumber << " + " << SecondNumber;
	float AddResult = FirstNumber + SecondNumber;
	cout << "= " << AddResult << endl;
}

void SubtractNumbers()
{
	cout << FirstNumber << " - " << SecondNumber;
	float SubResult = FirstNumber - SecondNumber;
	cout << "= " << SubResult << endl;
}

void DivideNumbers()
{
	cout << FirstNumber << " / " << SecondNumber;
	float DivResult = FirstNumber / SecondNumber;
	cout << "= " << DivResult << endl;
}
That's because we've already defined these

1
2
3
4
5
 
float MultResult = FirstNumber * SecondNumber;
float DivResult = FirstNumber / SecondNumber;
float AddResult = FirstNumber + SecondNumber;
float SubResult = FirstNumber - SecondNumber;


in the beginning. Just remove them :)
still receiving the same error
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
#include <iostream>
using namespace std;

float FirstNumber = 0.0;
float SecondNumber = 0.0;
char MathSymbol;

void MultiplyNumbers();
void AddNumbers();
void SubtractNumbers();
void DivideNumbers();

int main()
{ 
	cout << "Enter first number: ";
	cin >> FirstNumber;
	cout << "Enter multiplication symbol: ";
	cin >> MathSymbol;
	cout << "Enter second number: ";
	cin >> SecondNumber;
	if (MathSymbol == 'x')
	{
		void MultiplyNumbers();
	}
	if (MathSymbol == '+')
	{
		void AddNumbers();
	}
	if (MathSymbol == '-')
	{
		void SubtractNumbers();
	}
	if (MathSymbol == '/')
	{
		void DivideNumbers();
	}
	return 0;
}

void MultiplyNumbers()
{
	cout << FirstNumber << " x " << SecondNumber;
	float MultResult = FirstNumber * SecondNumber;
	cout << "= " << MultResult << endl;
}

void AddNumbers()
{
	cout << FirstNumber << " + " << SecondNumber;
	float AddResult = FirstNumber + SecondNumber;
	cout << "= " << AddResult << endl;
}

void SubtractNumbers()
{
	cout << FirstNumber << " - " << SecondNumber;
	float SubResult = FirstNumber - SecondNumber;
	cout << "= " << SubResult << endl;
}

void DivideNumbers()
{
	cout << FirstNumber << " / " << SecondNumber;
	float DivResult = FirstNumber / SecondNumber;
	cout << "= " << DivResult << endl;
}

And thank you for all your help!
You are wellcome, but oh my, i must be falling asleep.

1
2
3
4
5
 
if (MathSymbol == 'x')
	{
		void MultiplyNumbers();
	}


Omit the void from the function calls.
Hi Tyler, I slightly tweaked your code, it looks like this now:

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
#include <iostream>
using namespace std;

float FirstNumber = 0.0;
float SecondNumber = 0.0;
char MathSymbol;
float MultResult = FirstNumber * SecondNumber;
float DivResult = FirstNumber / SecondNumber;
float AddResult = FirstNumber + SecondNumber;
float SubResult = FirstNumber - SecondNumber;

void MultiplyNumbers();
void AddNumbers();
void SubtractNumbers();
void DivideNumbers();

int main()
{
	cout << "Enter first number: ";
	cin >> FirstNumber;
	cout << "Enter operation symbol: ";
	cin >> MathSymbol;
	cout << "Enter second number: ";
	cin >> SecondNumber;

    if (MathSymbol == 'x' || MathSymbol == '*')
	{
		 MultiplyNumbers();
	}
	if (MathSymbol == '+')
	{
		 AddNumbers();
	}
	if (MathSymbol == '-')
	{
		 SubtractNumbers();
	}
	if (MathSymbol == '/')
	{
		 DivideNumbers();
	}
	return 0;
}

void MultiplyNumbers()
{
	cout << FirstNumber << " x " << SecondNumber;
	float MultResult = FirstNumber * SecondNumber;
	cout << "= " << MultResult << endl;
}

void AddNumbers()
{
	cout << FirstNumber << " + " << SecondNumber;
	float AddResult = FirstNumber + SecondNumber;
	cout << "= " << AddResult << endl;
}

void SubtractNumbers()
{
	cout << FirstNumber << " - " << SecondNumber;
	float SubResult = FirstNumber - SecondNumber;
	cout << "= " << SubResult << endl;
}

void DivideNumbers()
{
	cout << FirstNumber << " / " << SecondNumber;
	float DivResult = FirstNumber / SecondNumber;
	cout << "= " << DivResult << endl;
}



The differences are that in a cout << statement, I changed "multiplication"
to "operation" signifying to a user that you can do more then multiplication.
I also the if condition that checked to see if it multiplication.
Originally, it checked to see if the character was 'x' no it also checks for '*'
I did this by using || its the OR operator.
the problem i think was giving you an error was your call to the function.

You included the function type void DivideNumbers ();

When your calling a function, you do not need to include its type, only its name, so it would be
DivideNumbers ();

It was like that for all of them, so I changed that. hope it works :)

Oh ya, funny thing I saw on YouTube:

http://www.youtube.com/watch?v=wSReSGe200A




It worked! Thank you for all your help.
Topic archived. No new replies allowed.