/* AUTORE: Manuel Vichi Recupero: Verifica 3 3^BIN */ #include #include #include using namespace std; // Struct per la funzione 1b typedef struct { int a; int b; } Struct1b; // Struct per la funzione 2b typedef struct { char car; int num; } Struct2ab; // Struct per il risultato della funzione 2b struct StructResult2b { int nVocali; int nDispari; }; // Dichiarazione delle funzioni da implementare void funzione0b(int arr[], int size, int num); Struct1b funzione1b(int arr[], int size, Struct1b params); StructResult2b funzione2b(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 // Esempio per la funzione 0b int arr[10]; funzione0b(arr, 10, 5); cout << "\nArray riempito con 5 numeri dispari e il resto 0:" << endl; stampaArray(arr, 10); // Esempio per la funzione 1b Struct1b params = {2, 3}; // Parametri di input Struct1b result1b = funzione1b(arr, 10, params); cout << "\nSommatoria calcolata (funzione 1b):" << endl; cout << "somma(v[i]*a+b): " << result1b.a << ", somma(v[i]*a-b): " << result1b.b << endl; // Esempio per la funzione 2b Struct2ab structArr[5] = {{'a', 6}, {'b', 4}, {'e', 7}, {'o', 5}, {'u', 3}}; cout << "\nArray di struct (Struct2ab):" << endl; stampaArrayStruct2ab(structArr, 5); StructResult2b result2b = funzione2b(structArr, 5); cout << "Numero di vocali: " << result2b.nVocali << endl; cout << "Numero di dispari: " << result2b.nDispari << endl; return 0; } void funzione0b(int arr[], int size, int num) { // Riempimento dell'array con 0 in tutte le posizioni per comodità for (int i = 0; i < size; i++) { arr[i] = 0; } // Genera per 5 volte la posizione casuale e la riempie con un numero casuale dispari for (int i = 0; i <= num; i++) { int s = rand() % size; int r = rand() % 1000; if (r % 2 != 0) { arr[s] = r; } else { arr[s] = r + 1; // Se il numero è pari allora memorizza nell'array il suo sucessivo che è sicuramente dispari } } } Struct1b funzione1b(int arr[], int size, Struct1b params){ Struct1b s; //Inizializzazione struct di return for (int i = 0; i < size; i++) { s.a += arr[i] * params.a + params.b; s.b += arr[i] * params.a - params.b; } return s; } StructResult2b funzione2b(Struct2ab arr[], int size){ StructResult2b s; //Inzializzazione struct di return s.nVocali = 0; //Inizializzazione a 0 per comodità s.nDispari = 0; //Inizializzazione a 0 per comodità 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].car == 'a' || arr[i].car == 'e' || arr[i].car == 'i' || arr[i].car == 'o' || arr[i].car == 'u') { s.nVocali++; } if (arr[i].num % 2 != 0) { s.nDispari++; } } return s; }