#include <stdio.h>
#include <stdlib.h>
#include <time.h>

// Funzione per generare un valore casuale compreso tra a e b
int genera_valore_casuale(int a, int b) {
    return rand() % (b - a + 1) + a;
}

// Funzione per cercare le occorrenze di un valore specifico in un array
int conta_occorrenze(int array[], int lunghezza, int valore) {
    int contatore = 0;
    for (int i = 0; i < lunghezza; i++) {
        if (array[i] == valore) {
            contatore++;
        }
    }
    return contatore;
}

int main() {
    int n, a, b, valore_specifico;

    // Input della dimensione degli array e degli estremi dell'intervallo
    printf("Inserisci la dimensione degli array: ");
    scanf("%d", &n);
    printf("Inserisci gli estremi dell'intervallo (a e b): ");
    scanf("%d %d", &a, &b);
    printf("Inserisci il valore specifico da cercare: ");
    scanf("%d", &valore_specifico);

    // Allocazione dinamica di memoria per gli array
    int *array_valori = (int *)malloc(n * sizeof(int));
    int *array_random = (int *)malloc(n * sizeof(int));

    // Inizializzazione del generatore di numeri casuali
    srand(time(NULL));

    // Input dei valori nell'array
    printf("Inserisci i valori nell'array:\n");
    for (int i = 0; i < n; i++) {
        scanf("%d", &array_valori[i]);
    }

    // Generazione di valori casuali e memorizzazione nell'array random
    for (int i = 0; i < n; i++) {
        array_random[i] = genera_valore_casuale(a, b);
    }

    // Cerca le occorrenze del valore specifico in entrambi gli array
    int occorrenze_valori = conta_occorrenze(array_valori, n, valore_specifico);
    int occorrenze_random = conta_occorrenze(array_random, n, valore_specifico);

    // Stampa il risultato
    printf("Il valore %d compare %d volte nell'array dei valori inseriti.\n", valore_specifico, occorrenze_valori);
    printf("Il valore %d compare %d volte nell'array dei valori casuali.\n", valore_specifico, occorrenze_random);

    // Deallocazione della memoria
    free(array_valori);
    free(array_random);

    return 0;
}

