functions

Im trying to learn multiple functions and trying to put a class in a program. Cans you please tell me what bit of code to make into a function to call into main to make the program shorter and what to put in a class
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
129
130
131
132
133
134
135
136
#include <iostream>
#include <cstdlib>

using namespace std;

int main()
{
    int Total = 0;
	int Amount;
	int Number;
	int whatoperation;
	int answertoaverage;
	int restart;

	while (restart) {
    system("CLS");

	cout << "Here are your choices(enter the number before the operation)" << endl << endl;
	cout << "1.Addition" << endl;
	cout << "2.Subtraction" << endl;
	cout << "3.Multiplication" << endl;
	cout << "4.Division" << endl;
	cout << "5.Average Calculator" << endl;

	cin >> whatoperation;

	system("CLS");

	switch(whatoperation){
    case 1:
    cout << "Enter in how many numbers you want to use" << endl;
	cin >> Amount;

	for(int i = 0; i < Amount; i++)   // Keeps looping until i == Amount
	{
		cout << "Number " << i << ": " ;  // Shows user what number they are entering
		cin >> Number;

		Total = Number + Total;  // Adds number to total
	}

	cout << "The total is " << Total << endl;  // Prints out total value when loop has finished
	break;

	case 2:
	cout << "Enter in how many numbers you want to use" << endl;
	cin >> Amount;

	for(int i = 0; i < Amount; i++)
	{
		cout << "Number " << i << ": " ;
		cin >> Number;

		if(i == 0)
		{
			Total = Total + Number;
		}

		else
		{
			Total = Total - Number;
		}
	}

	cout << "The total is " << Total << endl;
	break;

	case 3:
	cout << "Enter in how many numbers you want to use" << endl;
	cin >> Amount;

	for(int i = 0; i < Amount; i++)
	{
		cout << "Number " << i << ": " ;
		cin >> Number;

		if(i == 0)
		{
			Total = Total + Number;
		}

		else
		{
			Total = Total * Number;
		}
	}
	cout << "The total is " << Total << endl;
	break;

	case 4:
	cout << "Enter in how many numbers you want to use" << endl;
	cin >> Amount;

	for(int i = 0; i < Amount; i++)
	{
		cout << "Number " << i << ": " ;
		cin >> Number;

		if(i == 0)
		{
			Total = Total + Number;
		}

		else
		{
			Total = Total / Number;
		}
		cout << "The total is " << Total << endl;
	}
	break;
	case 5:
	cout << "Enter how many numbers you want to find the average of: ";
	cin >> Amount;

	for(int i = 0; i < Amount; i++)
	{
	    cout << "Number " << i << ": " ;
		cin >> Number;

		Total = Number + Total;
	}
	answertoaverage = Total / Amount;
	cout << "The average of those " << Amount << " numbers is " << answertoaverage << endl;
}
	cout << "enter 1 to restart or 2 to quit: ";
	cin >> restart;
	if(restart == 1){
    }else{
        break;
    }

    }

    cin.get();
	return 0;
}
can some one please answer
Create a function for each of your case statements and have that function perform what that case intends it to do.

1
2
3
4
case 1: doSomething(); break;
case 2: doSomthingElse(); break;
case 3: doSomethingCrazy(); break;
case 4: doSomethingForever(); break;


And go from there.
Going from what the last person said, you can create a function (like int main) by either making an int function, which holds a value, something you want to output(which would be very helpful in this program) or a void function.

for example:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
using namespace.std

int somefunction()
{
    //addition
}
int anotherfunction()
{
  //subtraction, etc...
}
int main()
{
//blah blah
case 1:
somefunction(); //calls whatever that function does, in this case the comment of addition does    nothing, to do it here
break;
case 2:
anotherfunction(); //calls the function anotherfunction to work here
break;
}



The void function is the same but cannot hold a value:
1
2
3
4
5
6
7
8
void somefunction()
{
//whatever it does
}
int main()
{
somefunction(); //calls the function above to use right here
}


Keep in mind that the parentheses behind the function can retain a value or variable.
hope that helps!
Last edited on
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
        int someFunc()
        {
            int x = 1;
            return x; // This is okay, function type is int, it's returning an int
        }
        
        double someFunc()
        {
            float x = 1.2;
            return x; // ERROR, can only return type double
        }
        
        void someFunc()
        {
            int x = 1;
            return x; // ERROR, can't return anything (void function)
        }

They can all take and arguments though:

1
2
3
        int someFunc(char a, int b, int c)
        double someFunc(int a, double b)
        void someFunc(string a, float b, float c, int d)
Last edited on
7
8
9
10
11
        double someFunc()
        {
            float x = 1.2;
            return x; // ERROR, can only return type double
        }
Uh, no, this is completely valid. A float is always implicitly convertible to a double, because a double is more precise than a float and can take its value. This is an 'implicit widening cast'
Oh yeah.. just like you can return a double in an int function (even though you'd lose the precision). Or did I get that backwards?
Last edited on
You would not lose precision ;p

Also, what is a 'double function' or a 'void function'? I do not understand, there are only functions, and some can return values while others return nothing.
Last edited on
I mean their return type (double function(), void function()).
Oh, I was confused.
1
2
double Func1(); //Function which returns a double
void Func2();   //Function which returns nothing 
:)
Topic archived. No new replies allowed.