Upload files to "struct"
This commit is contained in:
parent
6d1aada708
commit
a2cb844047
|
@ -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;
|
||||
}
|
Loading…
Reference in New Issue