Esercizi Structure in C++
Codegrind Team•Jul 22 2023
Ecco degli esercizi semplici con soluzione per praticare le basi delle structure in C++.
Esercizio 1
Definisci una struttura "Persona" con i campi "nome" e "etĂ " e crea una variabile di tipo "Persona":
#include <iostream>
using namespace std;
struct Persona {
string nome;
int eta;
};
int main() {
Persona persona1;
persona1.nome = "Mario";
persona1.eta = 30;
cout << "Nome: " << persona1.nome << endl;
cout << "EtĂ : " << persona1.eta << endl;
return 0;
}
Esercizio 2
Definisci una struttura "Libro" con i campi "titolo", "autore" e "anno" e crea un array di libri:
#include <iostream>
using namespace std;
struct Libro {
string titolo;
string autore;
int anno;
};
int main() {
Libro biblioteca[3];
biblioteca[0].titolo = "Il signore degli anelli";
biblioteca[0].autore = "J.R.R. Tolkien";
biblioteca[0].anno = 1954;
biblioteca[1].titolo = "1984";
biblioteca[1].autore = "George Orwell";
biblioteca[1].anno = 1949;
biblioteca[2].titolo = "Orgoglio e pregiudizio";
biblioteca[2].autore = "Jane Austen";
biblioteca[2].anno = 1813;
for (int i = 0; i < 3; i++) {
cout << "Libro " << i + 1 << endl;
cout << "Titolo: " << biblioteca[i].titolo << endl;
cout << "Autore: " << biblioteca[i].autore << endl;
cout << "Anno: " << biblioteca[i].anno << endl;
cout << endl;
}
return 0;
}
Esercizio 3
Definisci una struttura "Punto" con i campi "x" e "y" e calcola la distanza tra due punti:
#include <iostream>
#include <cmath>
using namespace std;
struct Punto {
int x;
int y;
};
double calcolaDistanza(Punto p1, Punto p2) {
int diffX = p2.x - p1.x;
int diffY = p2.y - p1.y;
return sqrt(diffX * diffX + diffY * diffY);
}
int main() {
Punto punto1 = {2, 3};
Punto punto2 = {5, 7};
double distanza = calcolaDistanza(punto1, punto2);
cout << "Distanza tra i punti: " << distanza << endl;
return 0;
}
Esercizio 4
Definisci una struttura "Studente" con i campi "nome", "etĂ " e "voto" e calcola la media dei voti di un gruppo di studenti:
#include <iostream>
using namespace std;
struct Studente {
string nome;
int eta;
double voto;
};
double calcolaMedia(Studente studenti[], int lunghezza) {
double somma = 0;
for (int i = 0; i < lunghezza; i++) {
somma += studenti[i].voto;
}
return somma / lunghezza;
}
int main() {
const int NUM_STUDENTI = 3;
Studente studenti[NUM_STUDENTI];
studenti[0].nome = "Marco";
studenti[0].eta = 20;
studenti[0].voto = 7.5;
studenti[1].nome = "Paola";
studenti[1].eta = 19;
studenti[1].voto = 8.0;
studenti[2].nome = "Luca";
studenti[2].eta = 21;
studenti[2].voto = 6.8;
double media = calcolaMedia(studenti, NUM_STUDENTI);
cout << "Media dei voti: " << media << endl;
return 0;
}
Esercizio 5
Definisci una struttura "Auto" con i campi "marca", "modello" e "anno" e crea un'array di auto:
#include <iostream>
using namespace std;
struct Auto {
string marca;
string modello;
int anno;
};
int main() {
const int NUM_AUTO = 2;
Auto garage[NUM_AUTO];
garage[0].marca = "Fiat";
garage[0].modello = "Panda";
garage[0].anno = 2010;
garage[1].marca = "Ford";
garage[1].modello = "Focus";
garage[1].anno = 2015;
for (int i = 0; i < NUM_AUTO; i++) {
cout << "Auto " << i + 1 << endl;
cout << "Marca: " << garage[i].marca << endl;
cout << "Modello: " << garage[i].modello << endl;
cout << "Anno: " << garage[i].anno << endl;
cout << endl;
}
return 0;
}
Esercizio 6
Definisci una struttura "Rect" con i campi "larghezza" e "altezza" e calcola l'area di un rettangolo:
#include <iostream>
using namespace std;
struct Rect {
double larghezza;
double altezza;
};
double calcolaArea(Rect rettangolo) {
return rettangolo.larghezza * rettangolo.altezza;
}
int main() {
Rect rettangolo;
rettangolo.larghezza = 5.4;
rettangolo.altezza = 3.2;
double area = calcolaArea(rettangolo);
cout << "Area del rettangolo: " << area << endl;
return 0;
}
Esercizio 7
Definisci una struttura "Tempo" con i campi "ore", "minuti" e "secondi" e calcola la somma di due tempi:
#include <iostream>
using namespace std;
struct Tempo {
int ore;
int minuti;
int secondi;
};
Tempo sommaTempi(Tempo tempo1, Tempo tempo2) {
Tempo risultato;
int totaleSecondi = tempo1.ore * 3600 + tempo1.minuti * 60 + tempo1.secondi +
tempo2.ore * 3600 + tempo2.minuti * 60 + tempo2.secondi;
risultato.ore = totaleSecondi / 3600;
risultato.minuti = (totaleSecondi % 3600) / 60;
risultato.secondi = (totaleSecondi % 3600) % 60;
return risultato;
}
int main() {
Tempo tempo1 = {1, 30, 45};
Tempo tempo2 = {0, 45, 30};
Tempo risultato = sommaTempi(tempo1, tempo2);
cout << "Somma dei tempi:" << endl;
cout << "Ore: " << risultato.ore << endl;
cout << "Minuti: " << risultato.minuti << endl;
cout << "Secondi: " << risultato.secondi << endl;
return 0;
}
Esercizio 8
Definisci una struttura "Prodotto" con i campi "nome", "prezzo" e "quantitĂ " e calcola il totale di spesa per un elenco di prodotti:
#include <iostream>
using namespace std;
struct Prodotto {
string nome;
double prezzo;
int quantita;
};
double calcolaTotale(Prodotto prodotti[], int lunghezza) {
double totale = 0;
for (int i = 0; i < lunghezza; i++) {
totale += prodotti[i].prezzo * prodotti[i].quantita;
}
return totale;
}
int main() {
const int NUM_PRODOTTI = 3;
Prodotto listaProdotti[NUM_PRODOTTI];
listaProdotti[0].nome = "Maglietta";
listaProdotti[0].prezzo = 15.99;
listaProdotti[0].quantita = 2;
listaProdotti[1].nome = "Jeans";
listaProdotti[1].prezzo = 49.99;
listaProdotti[1].quantita = 1;
listaProdotti[2].nome = "Scarpe";
listaProdotti[2].prezzo = 79.99;
listaProdotti[2].quantita = 1;
double totaleSpesa = calcolaTotale(listaProdotti, NUM_PRODOTTI);
cout << "Totale spesa: " << totaleSpesa << endl;
return 0;
}
Esercizio 9
Definisci una struttura "Film" con i campi "titolo", "regista" e "anno" e crea una variabile di tipo "Film". Successivamente, permetti all'utente di inserire i dati del film e visualizzali:
#include <iostream>
using namespace std;
struct Film {
string titolo;
string regista;
int anno;
};
int main() {
Film film;
cout << "Inserisci il titolo del film: ";
getline(cin, film.titolo);
cout << "Inserisci il nome del regista: ";
getline(cin, film.regista);
cout << "Inserisci l'anno di uscita del film: ";
cin >> film.anno;
cin.ignore();
cout << endl;
cout << "Dati del film:" << endl;
cout << "Titolo: " << film.titolo << endl;
cout << "Regista: " << film.regista << endl;
cout << "Anno: " << film.anno << endl;
return 0;
}
Esercizio 10
Definisci una struttura "Giocatore" con i campi "nome" e "punteggio" e crea un array di giocatori. Ordina l'array in base al punteggio:
#include <iostream>
#include <algorithm>
using namespace std;
struct Giocatore {
string nome;
int punteggio;
};
bool confrontaPunteggio(Giocatore giocatore1, Giocatore giocatore2) {
return giocatore1.punteggio > giocatore2.punteggio;
}
int main() {
const int NUM_GIOCATORI = 4;
Giocatore squadra[NUM_GIOCATORI];
squadra[0].nome = "Marco";
squadra[0].punteggio = 120;
squadra[1].nome = "Luca";
squadra[1].punteggio = 80;
squadra[2].nome = "Paolo";
squadra[2].punteggio = 150;
squadra[3].nome = "Giulia";
squadra[3].punteggio = 100;
sort(squadra, squadra + NUM_GIOCATORI, confrontaPunteggio);
cout << "Classifica giocatori:" << endl;
for (int i = 0; i < NUM_GIOCATORI; i++) {
cout << "Giocatore " << i + 1 << ": " << squadra[i].nome << ", Punteggio: " << squadra[i].punteggio << endl;
}
return 0;
}