132 lines
3.6 KiB
C++
132 lines
3.6 KiB
C++
/*
|
|
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 <tuo_cognome>.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 <iostream>
|
|
#include <cstdlib>
|
|
#include <ctime>
|
|
|
|
#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;
|
|
} |