🚀 Nuova versione beta disponibile! Feedback o problemi? Contattaci

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;
}