#include <stdio.h>
#include <stdbool.h>

// Funzione per calcolare la somma degli elementi
int somma(int arr[], int n) {
    int somma = 0;
    for (int i = 0; i < n; i++) {
        somma += arr[i];
    }
    return somma;
}

// Funzione per calcolare il prodotto degli elementi
int prodotto(int arr[], int n) {
    int prodotto = 1;
    for (int i = 0; i < n; i++) {
        prodotto *= arr[i];
    }
    return prodotto;
}

// Funzione per trovare il valore minimo
int min(int arr[], int n) {
    int minimo = arr[0];
    for (int i = 1; i < n; i++) {
        if (arr[i] < minimo) {
            minimo = arr[i];
        }
    }
    return minimo;
}

// Funzione per trovare il valore massimo
int max(int arr[], int n) {
    int massimo = arr[0];
    for (int i = 1; i < n; i++) {
        if (arr[i] > massimo) {
            massimo = arr[i];
        }
    }
    return massimo;
}

// Funzione per calcolare la media
float media(int arr[], int n) {
    return (float)somma(arr, n) / n;
}

// Funzione per verificare se l'array è palindromo
bool isPalindrome(int arr[], int n) {
    for (int i = 0; i < n / 2; i++) {
        if (arr[i] != arr[n - 1 - i]) {
            return false;
        }
    }
    return true;
}

// Funzione per verificare se l'array è ordinato in modo crescente
bool isSorted(int arr[], int n) {
    for (int i = 1; i < n; i++) {
        if (arr[i] < arr[i - 1]) {
            return false;
        }
    }
    return true;
}

// Funzione per cercare un elemento
int ricerca(int arr[], int n, int valore) {
    for (int i = 0; i < n; i++) {
        if (arr[i] == valore) {
            return i; // Indice dell'elemento trovato
        }
    }
    return -1; // Elemento non trovato
}

// Funzione per fare il mirroring di un array
void mirroring(int arr[], int n) {
    for (int i = 0; i < n / 2; i++) {
        int temp = arr[i];
        arr[i] = arr[n - 1 - i];
        arr[n - 1 - i] = temp;
    }
}

// Funzione per scambiare posizioni pari e dispari
void scambiaPariDispari(int arr[], int n) {
    for (int i = 1; i < n; i += 2) {
        int temp = arr[i - 1];
        arr[i - 1] = arr[i];
        arr[i] = temp;
    }
}

// Funzione per ruotare l'array a destra
void ruotaDx(int arr[], int n) {
    int ultimo = arr[n - 1];
    for (int i = n - 1; i > 0; i--) {
        arr[i] = arr[i - 1];
    }
    arr[0] = ultimo;
}

// Funzione per ruotare l'array a sinistra
void ruotaSx(int arr[], int n) {
    int primo = arr[0];
    for (int i = 0; i < n - 1; i++) {
        arr[i] = arr[i + 1];
    }
    arr[n - 1] = primo;
}
