# Practice with Functions

## Solutions

### Exercise 1

#### Solution #1

#include <iostream>using namespace std;int AddTwo (int addend1, int addend2)  {	return addend1 + addend2;}int main ()  {	int number1, number2, sum;		cout << "Enter two integers:\n";	cin >> number1 >> number2;	sum = AddTwo(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<<"Enter two integers to add"<<endl;		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;}int getSum(int addend1, int addend2){	return addend1 + addend2;}

#### Solutions (in C)

#include <stdio.h>int add(int, int);int main(){        int a, b, sum;        printf("A: ");        scanf_s("%d", &a);        printf("B: ");        scanf_s("%d", &b);        sum = add(a, b);        printf("The sum of %d and %d is %d.\n", a, b, sum);        return 0;}int add(int a, int b){        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

#### Solution #1

#include <iostream>using namespace std;void AddTwo (int addend1, int addend2, int &sum)  {	sum = addend1 + addend2;}int main ()  {	int number1, number2, sum;		cout << "Enter two integers:\n";	cin >> number1 >> number2;	AddTwo(number1, number2, sum);	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;void addNum(int, int, int&);int main(){	int number1,number2,sum;		//get values;	cout<<"Enter two integers to add"<<endl;		cout<<"Enter Number 1: ";	cin>>number1;	cout<<"Enter Number 2: ";	cin>>number2;		//call addNum to add the numbers	addNum(number1, number2, sum);		//print sum	cout<<number1<<" + "<<number2<<" = "<<sum; return 0;}void addNum(int addend1, int addend2, int &sum){	sum = addend1 + addend2;}

#### Solution #3

#include<iostream>using namespace std;void add(int,int);int sum=0;int main(){  cout<<"Please input the first number you wanna add:"<<endl;  int num1;  cin>>num1;  cout<<"Please input the second number you wanna ad"<<endl;  int num2;  cin>>num2;  add(num1,num2);  cout<<"The sum of these two number:"<<num1<<"&"<<num2<<" is:"<<sum<<endl;  return 0;}void add(int a,int b){  sum=a+b;}

### Exercise 3

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

#### 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 ;)

### Exercise 5

#### Solution #1

#include<iostream>using namespace std;void calculator(int num, int num2, int result);void calculator(int num,int num2,int result){	char op;	cout<<"\n     Calculator:-  \nEnter Number: " ;	cin>>num;	cout<<"Enter operator +,-,*,/,^  : ";	cin >>op;	cout<<"Enter second number: " ;	cin>>num2;    if(op=='+')result=num+num2;	if(op=='-')result=num-num2;	if(op=='*')result=num*num2;	if(op=='/')result=num/num2;	if(op=='^')result=num^num2;	cout<<"result: "<<result<<"\n";}main(){	int a,b,c;calculator(a,b,c);return 0;}}
#include <iostream>float add(float a, float b){	return a + b;}float sub(float a, float b){	return a - b;}float mul(float a, float b){	return a * b;}float div(float a, float b){	if(b != 0)	{		return a / b;			}	std::cout << "Error: division by zero.\n";	return 0;}float pow(float a, float b){	return pow(a, b);}float mod(float a, float b){	return fmod(a, b);}void calc(){	float a, b;	char op;	std::cout << "Enter a #: ";	std::cin >> a;	std::cout << "Enter an operator (+, -, *, /, ^, %): "; 	std::cin >> op;	std::cout << "Enter a second #: ";	std::cin >> b;	switch(op)	{		case '+':			std::cout << "Result: " << add(a, b);			break;		case '-':			std::cout << "Result: " << sub(a, b);			break;		case '*':			std::cout << "Result: " << mul(a, b);			break;		case '/':			std::cout << "Result: " << div(a, b);			break;		case '^':			std::cout << "Result: " << pow(a, b);			break;		case '%':			std::cout << "Result: " << mod(a, b);			break;		default:			std::cout << "Error: operator not valid.\n";	}}int main(){	calc();	return 0;}
// This program will do simple calculations involving + - * / and ^ //#include <iostream>#include <cmath>using namespace std;int main(){    int x,y,sum;    cout << "Enter first number ";    cin >> x;    cout << endl;    cout << "Enter second number ";    cin >> y;    cout << endl;    cout << 1 << " +" << endl;    cout << 2 << " -" << endl;    cout << 3 << " *" << endl;    cout << 4 << " /" << endl;    cout << 5 << " ^" << endl << endl;    cout << "What math would you like to do? ";    cin >> sum;    cout << endl;    switch (sum){case 1:    sum = x + y;    cout << "The answer to your addition is " << sum << endl;    break;case 2:    sum = x - y;    cout << "The answer to your subtraction is " << sum << endl;    break;case 3:    sum = x * y;    cout << "The answer to your multiplication is " << sum<< endl;    break;case 4:    sum = x / y;    cout << "The answer to your division is " << sum << endl;    break;case 5:    sum = pow(x,y);    cout << "The answer to your power function is " << sum << endl;    break;default:    cout << "You have entered an invalid option " << endl;    break;    }    return 0;}