C++ Calculator

Hi Guys,

Im writing out my first calculator but for some reason its not building, nor is it showing me where the error is.

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

 
using namespace std;



int multThis(int x, int y)
{
	return x*y;
}

int addThis(int x, int y)
{
	return x+y;
}

double divideThis(double x, int y)
{
	return x/y;
}
int subThis(int x, int y)
{
	return x-y;
}


double solve(double x, double y, char sym);
int calc(double x, double y, char sym);

int main()
{
double x;
double y;
char sym;
int solution;

cin >> x >> sym >> y;

solution = solve(x, y, sym);
cout << "Answer: " << solution << endl;

int solve(double x, double y, char sym);
{
	switch(sym)
{
case '+':
	cout << addThis(x,y);
	break;
case '-':
	cout << subThis(x,y);
	break;
case '*':
	cout << multThis(x,y);
	break;
case '/':
	cout << divideThis(x,y);
	break;
default:
   cout << "\nIncorrect operation!  Try again: ";
   cin >> x >> sym >> y;
   solve(x, y, sym);
}
}
cin.get();
}


ty in advance.
How do you know that it isn't compiling if it isn't showing you any error messages that you can copy and paste here?

One thing I notice right away is that you accidentally defined your "solve" function inside the main function!
Last edited on
my parameter:


double solve(double x, double y, char sym);

is outside of main, and im not seeing any errors.
No, that is your definition, but you implemented it inside of main. Here is what you meant to do:
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
  #include <iostream>
#include <string>

 
using namespace std;



int multThis(int x, int y)
{
	return x*y;
}

int addThis(int x, int y)
{
	return x+y;
}

double divideThis(double x, int y)
{
	return x/y;
}
int subThis(int x, int y)
{
	return x-y;
}


double solve(double x, double y, char sym);
int calc(double x, double y, char sym);

int main()
{
double x;
double y;
char sym;
int solution;

cin >> x >> sym >> y;

solution = solve(x, y, sym);
cout << "Answer: " << solution << endl;

cin.get();
} 

int solve(double x, double y, char sym)
{
    switch(sym) {
        case '+':
            cout << addThis(x,y);
        break;

        case '-':
            cout << subThis(x,y);
        break;

        case '*':
            cout << multThis(x,y);
        break;

        case '/':
            cout << divideThis(x,y);
        break;

        default:
            cout << "\nIncorrect operation!  Try again: ";
            cin >> x >> sym >> y;
            solve(x, y, sym);
    }
}


Your problem is that you simply forward declared the function within your 'main' function (see the semicolon on the end?) which meant that you then simply put a block with the contents of the function inside. You can't define a function within another one (except for lambda funcs).
You are forgetting the return statement in your solve function.

[edit] You also prototype the function to have a return type of a double but then when you define the solve function it has a return type of int and as mentioned by LB you have the function defined inside of the main function but NT3 show's you where to put it.
Last edited on
Topic archived. No new replies allowed.