# C++ Programming/Exercises/Functions/Pages

## Contents

### EXERCISE 1

Write a program with a function that takes two int parameters, adds them together, then returns the sum. The program should ask the user for two numbers, then call the function with the numbers as arguments, and tell the user the sum.

Solution

Solution #1

```#include <iostream>
using namespace std;

}

int main ()  {
int number1, number2, sum;

cout << "Enter two integers:\n";
cin >> number1 >> number2;
cout << "\nThe sum is " << sum << ".";

}
```

Solution #2

```//by blazzer12
//Input two values. Call a function that returns the sum of the values.

#include<iostream>

using namespace std;

int getSum(int, int);

int main()
{
int number1, number2, sum;

//get values

cout<<"Number1 :";
cin>>number1;
cout<<"Number2 :";
cin>>number2;

//call getSum() and store result in sum
sum = getSum(number1, number2);

//print result
cout<<number1<<" + "<<number2<<" = "<<sum;
}

{
}
```

The solution in C.

```#include <stdio.h>

int main()
{
int a, b, sum;

printf("A: ");
scanf("%d", &a);

printf("B: ");
scanf("%d", &b);

printf("The sum of %d and %d is %d.\n", a, b, sum);

return 0;
}

{
return a + b;
}
```

```// Another solution:
# include <iostream>

using namespace std;

int sum (int number1, int number2);

int number1;
int number2;

int main()
{

cout<<"Give me a number amigo: ";
cin>>number1;

cout<<"Give me another number dude: ";
cin>>number2;

cout<<"The sum of "<<number1<<" and "<<number2<<" is: "<<sum(number1,number2)<<"."<<endl;

return 0;

}

int sum (int number1, int number2)
{
return number1+number2;
}

// by neuroalchemist
```

### EXERCISE 2

Basically the same as exercise 1, but this time, the function that adds the numbers should be void, and takes a third, pass by reference parameter; then puts the sum in that.

Solution

Solution #1

```#include <iostream>
using namespace std;

}

int main ()  {
int number1, number2, sum;

cout << "Enter two integers:\n";
cin >> number1 >> number2;
cout << "\nThe sum is " << sum << ".";

return 0;
}
```

Solution #2

```//by blazzer12
//adds two integers using a "pass by reference" type function call.

#include <iostream>
using namespace std;

int main()
{
int number1,number2,sum;

//get values;

cout<<"Enter Number 1: ";
cin>>number1;
cout<<"Enter Number 2: ";
cin>>number2;

//print sum
cout<<number1<<" + "<<number2<<" = "<<sum;
return 0;
}
{
}
```

Solution #3

```#include<iostream>

using namespace std;

int sum=0;

int main(){
int num1;
cin>>num1;
int num2;
cin>>num2;
cout<<"The sum of these two number:"<<num1<<"&"<<num2<<" is:"<<sum<<endl;
return 0;
}

sum=a+b;
}
```

### EXERCISE 3

Write a recursive function that finds the #n integer of the Fibonacci sequence. Then build a minimal program to test it. For reference see Wikipedia:Fibonacci number.

```For any possible natural number "n", the following applies
fib(n+2) = fib(n+1) + fib(n)
Also, the following are predefined
fib(0) = 0
fib(1) = 1
```
Solution

Solution #1

```#include <iostream>

using namespace std;

unsigned fib(unsigned n);

int main()
{
// Printing the first 20 Fibonacci sequence values
for (unsigned i = 0; i < 20; i++){
cout << "fib(" << i << ") = " << fib(i) << endl;
}
}

unsigned fib(unsigned n)
{
if (n < 2)
return n;

return fib(n-2) + fib(n-1);
}
```

### EXERCISE 4

Basically the same as exercise 3, although this time you mustn't use recursion.

Solution

Solution #1

```#include <iostream>

using namespace std;

unsigned fib(unsigned n);

int main()
{
// Printing the first 20 Fibonacci sequence values
for (unsigned i = 0; i < 20; i++){
cout << "fib(" << i << ") = " << fib(i) << endl;
}
}

unsigned fib(unsigned n)
{
if (n < 2)
return n;

unsigned prev1 = 0;
unsigned prev2 = 1;

for (unsigned i = 0; i <= n-2; i++){
unsigned temp = prev1 + prev2;
// Just doing a rotation of values, since only the last two are needed
prev1 = prev2;
prev2 = temp;
}

return prev2;
}
```

For extra exercise, give a big number( like 1000000 ) to both exercise 3 and 4 solutions and compare the execution times. Ponder on the results ;)