# 5.2 Exercise - Function

## ৫.২ অনুশীলন: ইউজার ডিফাইনড ফাংশন এর ব্যবহার (১৬)

1. \[5] Calculate Square \[Function Prototype: int square(int)]
2. \[6] Calculate the Average of three integer numbers \[Function Prototype: float average(int, int, int)]
3. \[7] Determine EVEN or ODD \[Function Prototype: int is\_even(int)]
4. \[8] Determine Leap Year or Not \[Function Prototype: int is\_leap\_year(int)]
5. \[9] Find the Maximum between 2 numbers \[Function Prototype: int maximum(int, int)]
6. \[10] Define a function that takes an integer as an argument and print Fizz if it is divisible by 3, print Buzz if divisible by 5, and print FizzBuzz if it is divisible by both 3 and 5.  \[Function Prototype: void fizz\_buzz(int)]
7. \[11] Print the natural numbers up to N.
8. \[12] Calculate the summation of natural numbers up to N.
9. \[13] Calculate factorial N.
10. \[14] Print the Multiplication Table of a given number.
11. \[15] Print the Multiplication Table of  1 to 10.
12. \[16] Print each divisor (or factor) of the given number.
13. \[17] Calculate the total number of divisors of a number.
14. \[18] Calculate the summation of divisors of a number.
15. \[19] Define a function that takes an integer array as an argument and returns the average of all array elements.
16. \[20] Define a function that takes an integer array as an argument and a search key value X. If X is found in the array, return the index; otherwise, return -1.

## সমাধান

### \[5] Calculate Square \[Function Prototype: int square(int)]

{% code lineNumbers="true" %}
```c
#include<stdio.h>

int square(int num);

int main(){
    int num = 5;
    
    printf("Square of %d: %d\n", num, square(num));
    
    return 0;
}

int square(int num){
    return num * num;
}
```
{% endcode %}

### \[6] Calculate the Average of three integer numbers \[Function Prototype: float average(int, int, int)]

{% code lineNumbers="true" %}
```c
#include<stdio.h>

float average(int a, int b, int c);

int main(){
    int a = 4, b = 5, c = 6;
    
    printf("%f\n", average(a, b, c));
    
    return 0;
}

float average(int a, int b, int c){
    float sum, average;
    
    sum = a + b + c;
    average = sum / 3.0;
    
    return average;
}
```
{% endcode %}

### \[7] Determine EVEN or ODD \[Function Prototype: int is\_even(int)]

{% code lineNumbers="true" %}
```c
#include <stdio.h>

int is_even(int num);

int main(){
    int num = 10;
    
    if(is_even(num) == 1){
        printf("%d is even\n", num);
    }
    else{
        printf("%d is odd\n", num);
    }
    
    return 0;
}

int is_even(int num){
    if(num % 2 == 0){
        return 1;
    }
    else{
        return 0;
    }
}
```
{% endcode %}

### \[8] Determine Leap Year or Not \[Function Prototype: int is\_leap\_year(int)]

{% code lineNumbers="true" %}
```c
#include <stdio.h>

int is_leap_year(int year);

int main(){
    int year = 2024;
    
    if(is_leap_year(year) == 1){
        printf("%d is a leap year\n", year);
    }
    else{
        printf("%d is not a leap year\n", year);
    }
    
    return 0;
}

int is_leap_year(int year){
    if(year % 400 == 0){
        return 1;
    }
    else if(year % 100 == 0){
        return 0;
    }
    else if(year % 4 == 0){
        return 1;
    }
    else{
        return 0;
    }
}
```
{% endcode %}

### \[9] Find the Maximum between 2 numbers \[Function Prototype: int maximum(int, int)]

{% code lineNumbers="true" %}
```c
#include <stdio.h>

int maximum(int a, int b);

int main() {
    int num1 = 10, num2 = 15;
    
    printf("%d\n", maximum(num1, num2));
    
    return 0;
}

int maximum(int a, int b) {
    if(a > b){
        return a;
    }
    else{
        return b;
    }
}
```
{% endcode %}

### \[10] **FizzBuzz -** Define a function that takes an integer as an argument and print Fizz if it is divisible by 3, print Buzz if divisible by 5, and print FizzBuzz if it is divisible by both 3 and 5.  \[Function Prototype: void fizz\_buzz(int)]

{% code lineNumbers="true" %}
```c
#include <stdio.h>

void fizz_buzz(int num);

int main(){
    
    fizz_buzz(6);
    fizz_buzz(10);
    fizz_buzz(15);
    fizz_buzz(16);
    
    return 0;
}

void fizz_buzz(int num){
    if(num % 3 == 0 && num % 5 == 0){
        printf("FizzBuzz\n");
    }
    else if (num % 3 == 0){
        printf("Fizz\n");
    }
    else if (num % 5 == 0){
        printf("Buzz\n");
    }
    else{
        printf("%d\n", num);
    }
}
```
{% endcode %}

### \[11] Print the natural numbers up to N.

{% code lineNumbers="true" %}
```c
#include<stdio.h>

int series_print(int a, int n);

int main(){
    int a = 1, n = 10;
    
    series_print(a, n);
    
    return 0;
}

int series_print(int a, int n){
    int sum = 0, i;
    for(i = a; i <= n; i++){
        printf("%d ", i);
    }
    printf("\n");
    return sum;
}
```
{% endcode %}

### \[12] Calculate the summation of natural numbers up to N.

{% code lineNumbers="true" %}
```c
#include<stdio.h>

int series_sum(int a, int n);

int main(){
    int a = 1, n = 10;
    printf("%d\n", series_sum(a, n));
    return 0;
}

int series_sum(int a, int n){
    int sum = 0, i;
    for(i = a; i <= n; i++){
        sum += i;
    }
    return sum;
}
```
{% endcode %}

### \[13] Calculate factorial N.

{% code lineNumbers="true" %}
```c
#include<stdio.h>

long long int factorial(int n);

int main(){
    int n = 10;
    
    printf("%d! = %lld\n", n, factorial(n));
    
    return 0;
}

long long int factorial(int n){
    int i;
    long long int fact = 1;
    for(i = 1; i <= n; i++){
        fact *= i;
    }
    return fact;
}
```
{% endcode %}

### \[14] Print the Multiplication Table of a given number.

{% code lineNumbers="true" %}
```c
#include<stdio.h>

void print_multiplication_table(int n);

int main(){
    int n;
    
    scanf("%d", &n);
    print_multiplication_table(n);
    
    return 0;
}

void print_multiplication_table(int n){
    for(int i = 1; i <= 10; i++){
        printf("%d x %d = %d\n", n, i, n * i);
    }
}
```
{% endcode %}

| Sample Input | Sample Output                                                                                                                                                              |
| ------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 7            | <p>7 x 1 = 7</p><p>7 x 2 = 14</p><p>7 x 3 = 21</p><p>7 x 4 = 28</p><p>7 x 5 = 35</p><p>7 x 6 = 42</p><p>7 x 7 = 49</p><p>7 x 8 = 56</p><p>7 x 9 = 63</p><p>7 x 10 = 70</p> |

### \[15] Print the Multiplication Table of  1 to 10.

{% code lineNumbers="true" %}
```c
#include<stdio.h>

void print_multiplication_table(int num);

int main(){
    int i;
    for(i=1; i<=10; i++){
        print_multiplication_table(i);
    }
    
    return 0;
}

void print_multiplication_table(int num){
    printf("\nTable of %d\n", num);
    for(int i = 1; i <= 10; i++){
        printf("%d x %d = %d\n", num, i, num * i);
    }
}
```
{% endcode %}

### \[16] Print each divisor (or factor) of the given number.

{% code lineNumbers="true" %}
```c
#include<stdio.h>

void print_divisors(int num);

int main(){
    int num = 12;
    
    print_divisors(num);
    
    return 0;
}

void print_divisors(int num){
    for(int i = 1; i <= num; i++){
        if(num % i == 0){
            printf("%d ", i);
        }
    }
    printf("\n");
}
```
{% endcode %}

### \[17] Calculate the total number of divisors of a number.

{% code lineNumbers="true" %}
```c
#include<stdio.h>

int total_divisors(int num);

int main(){
    int num = 12;
    
    printf("%d\n", total_divisors(num));
    
    return 0;
}

int total_divisors(int num){
    int count = 0;
    for(int i = 1; i <= num; i++){
        if(num % i == 0){
            count++;
        }
    }
    return count;
}
```
{% endcode %}

### \[18] Calculate the summation of divisors of a number.

{% code lineNumbers="true" %}
```c
#include<stdio.h>

int summation_divisors(int num);

int main(){
    int num = 12;
    
    printf("%d\n", summation_divisors(num));
    
    return 0;
}

int summation_divisors(int num){
    int sum = 0;
    for(int i = 1; i <= num; i++){
        if(num % i == 0){
            sum += i;
        }
    }
    return sum;
}
```
{% endcode %}

### \[19] Define a function that takes an integer array as an argument and returns the average of all array elements.

{% code lineNumbers="true" %}
```c
#include<stdio.h>

float array_average(int arr[], int current_size);

int main(){
    int arr[10] = {1, 2, 3, 4, 5}, current_size = 5, total_size = 10;
    
    printf("%f\n", array_average(arr, current_size));
    
    return 0;
}

float array_average(int arr[], int current_size){
    float sum = 0, average = 0;
    for(int i = 0; i < current_size; i++){
        sum += arr[i];
    }
    average = sum / current_size;
    return average;
}
```
{% endcode %}

### \[20] Define a function that takes an integer array as an argument and a search key value X. If X is found in the array, return the index; otherwise, return -1.

{% code lineNumbers="true" %}
```c
#include<stdio.h>

int search_key(int arr[], int current_size, int key);

int main(){
    int arr[10] = {10, 20, 30, 40, 50}, current_size = 5, total_size = 10;
    int key = 30;
    int index = search_key(arr, current_size, key);
    
    if(index != -1){
        printf("Element %d found at index %d\n", key, index);
    }
    else{
        printf("Element %d not found in the array\n", key);
    }
    
    return 0;
}

int search_key(int arr[], int current_size, int key){
    for(int i = 0; i < current_size; i++){
        if(arr[i] == key){
            return i;  // Return the index if key value found
        }
    }
    return -1;  // Return -1 if key not found
}
```
{% endcode %}
