Upload files to "struct"

This commit is contained in:
Vichingo455 2025-02-04 13:05:38 +00:00
parent 6d1aada708
commit a2cb844047
1 changed files with 117 additions and 0 deletions

View File

@ -0,0 +1,117 @@
/*
AUTORE: Manuel Vichi
Recupero: Verifica 3 3^BIN
*/
#include <iostream>
#include <cstdlib>
#include <ctime>
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;
}