/* Nome: Mario Cognome: Montanari Classe: 3AIN Data: 31/01/2025 Testo della Prova Prova di Laboratorio - Programmazione in C++ Durata: 80 minuti Obiettivo: Scrivere le dichiarazioni delle funzioni utilizzate nel programma, implementate correttamente nel file .cpp. Requisiti: 1. Non modificare il main. 2. Completare il programma dichiarando e implementando le seguenti funzioni: ○ funzione0a: Riempie un array con numeri interi casuali pari. ○ funzione1a: Conta quanti numeri dell'array sono multipli di 7 e quanti sono maggiori di 30, restituendo il risultato in una Struct1a. ○ funzione2a: Conta quanti elementi di un array di Struct2ab soddisfano il criterio: ■ il campo car è una vocale e il campo num è maggiore di 5. 3. Non aggiungere altre funzioni o modificare il flusso del programma. */ #include #include #include #define NUM_MIN 0 #define NUM_MAX 100 using namespace std; // Struct per la funzione 1a typedef struct { int nMulti7; int nMagg30; } Struct1a; // Struct per le funzioni 2a typedef struct { char car; int num; } Struct2ab; // Dichiarazione delle funzioni da implementare void funzione0a(int arr[], int size); Struct1a funzione1a(int arr[], int size); int funzione2a(Struct2ab arr[], int size); // Funzioni già implementate per stampa void stampaArray(int arr[], int size) { for (int i = 0; i < size; ++i) { cout << arr[i] << " "; } cout << endl; } void stampaArrayStruct2ab(Struct2ab arr[], int size) { for (int i = 0; i < size; ++i) { cout << "{" << arr[i].car << ", " << arr[i].num << "} "; } cout << endl; } int main() { srand(time(0)); // Inizializza il generatore di numeri casuali // Funzione 0a int arr[10]; funzione0a(arr, 10); cout << "Array riempito con numeri pari casuali:" << endl; stampaArray(arr, 10); // Funzione 1a Struct1a result1a = funzione1a(arr, 10); cout << "\nNumero di multipli di 7: " << result1a.nMulti7 << endl; cout << "Numero di valori > 30: " << result1a.nMagg30 << endl; // Funzione 2a Struct2ab structArr[5] = {{'a', 6}, {'b', 4}, {'e', 7}, {'o', 5}, {'u', 3}}; cout << "\nArray di struct (Struct2ab):" << endl; stampaArrayStruct2ab(structArr, 5); int countVocaliMag5 = funzione2a(structArr, 5); cout << "\nElementi con vocale e num > 5: " << countVocaliMag5 << endl; return 0; } // Riempie un array con numeri interi casuali pari void funzione0a(int arr[], int size) { for (int i = 0; i < size; i++) { arr[i] = rand() % (NUM_MAX - NUM_MIN + 1) + NUM_MIN; for (int j = 0; j < size; j++) { if (arr[i] % 2 != 0) { arr[i] = rand() % (NUM_MAX - NUM_MIN + 1) + NUM_MIN; } } } } // Conta quanti numeri dell'array sono multipli di 7 e quanti sono maggiori di 30, restituendo il risultato in una Struct1a Struct1a funzione1a(int arr[], int size) { Struct1a result1a; result1a.nMulti7 = 0; result1a.nMagg30 = 0; int countMagg30 = 0; for (int i = 0; i < size; i++) { if (arr[i] % 7 == 0) { result1a.nMulti7++; } if (arr[i] > 30) { result1a.nMagg30++; } } return result1a; } // Conta quanti elementi di un array di Struct2ab soddisfano il criterio int funzione2a(Struct2ab arr[], int size) { int countVocaliMag5 = 0; for (int i = 0; i < size; i++) { if ((arr[i].car == 'a' || arr[i].car == 'e' || arr[i].car == 'i' || arr[i].car == 'o' || arr[i].car == 'u') && (arr[i].num > 5)) { countVocaliMag5++; } } return countVocaliMag5; }