School-Coding-Cpp/sfusi/esercizio5_dato_struct.cpp

95 lines
2.5 KiB
C++

/*
Nome: Mario
Cognome: Montanari
1. Scrivi un programma in C++ che:
- Definisca una struct denominata Dato, contenente i seguenti campi:
- numero (int): un numero intero;
- valore (float): un numero in virgola mobile;
- simbolo (char): un carattere.
2. Crei un array di Dato per gestire più elementi.
3. Implementi le seguenti funzioni:
- riempiArray(Dato arr[], int n): riempie l'array di Dato chiedendo i dati all'utente (o in modo casuale).
- trovaMassimo(const Dato arr[], int n): restituisce l'indice dell'elemento con il valore più alto nel campo valore.
- stampaArray(const Dato arr[], int n): stampa tutti gli elementi dell'array in formato leggibile.
- contaCar(const Dato arr[], char c): restituisce il conteggio delle occorrenze del carattere c.
*/
#include <iostream>
#include <ctime>
#include <cstdlib>
#define CAPACITY 10
#define SIZE 5
#define NUM_MIN 0
#define NUM_MAX 50
using namespace std;
typedef struct {
int numero;
float valore;
char simbolo;
} Dato;
void riempiArray(Dato arr[], int n);
void trovaMassimo(const Dato arr[], int n);
void stampaArray(const Dato arr[], int n);
void contaCar(const Dato arr[], int n);
int main(void) {
srand(time(NULL));
Dato arr[CAPACITY];
int n = SIZE;
int contaOccorrenzeC;
riempiArray(arr, n);
stampaArray(arr, n);
contaCar(arr, n);
trovaMassimo(arr, n);
return 0;
}
void riempiArray(Dato arr[], int n) {
float parteDecimale = 0;
for (int i = 0; i < n; i++) {
arr[i].numero = rand() % (NUM_MAX - NUM_MIN + 1) + NUM_MIN;
arr[i].valore = rand() % (NUM_MAX - NUM_MIN + 1) + NUM_MIN;
parteDecimale = rand() % (NUM_MAX - NUM_MIN + 1) + NUM_MIN;
arr[i].valore = arr[i].valore + (parteDecimale / 100);
arr[i].simbolo = rand() % (122 - 97 + 1) + 97;
}
}
void trovaMassimo(const Dato arr[], int n) {
float massimo = arr[0].valore;
for (int i = 0; i < n; i++) {
if (arr[i].valore > massimo) {
massimo = arr[i].valore;
}
}
cout << "Valore massimo nel campo 'valore': " << massimo << endl;
}
void stampaArray(const Dato arr[], int n) {
for (int i = 0; i < n; i++) {
cout << "Numero: " << arr[i].numero << endl;
cout << "Valore: " << arr[i].valore << endl;
cout << "Simbolo: " << arr[i].simbolo << endl << endl;
}
}
void contaCar(const Dato arr[], int n) {
int contaOccorrenzeC = 0;
for (int i = 0; i < n; i++) {
if (arr[i].simbolo == 'c') {
contaOccorrenzeC++;
}
}
cout << "Conta le occorrenze del carattere 'c': " << contaOccorrenzeC << endl;
}