From a2cb844047d0c3a9a7cc53a7d771ff5cfda14dcb Mon Sep 17 00:00:00 2001 From: Vichingo455 Date: Tue, 4 Feb 2025 13:05:38 +0000 Subject: [PATCH] Upload files to "struct" --- struct/recupero_verifica3_3BIN.cpp | 117 +++++++++++++++++++++++++++++ 1 file changed, 117 insertions(+) create mode 100644 struct/recupero_verifica3_3BIN.cpp diff --git a/struct/recupero_verifica3_3BIN.cpp b/struct/recupero_verifica3_3BIN.cpp new file mode 100644 index 0000000..15bd101 --- /dev/null +++ b/struct/recupero_verifica3_3BIN.cpp @@ -0,0 +1,117 @@ +/* +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; +} \ No newline at end of file