Esercizi costrutto struct in C++

Esercizio 1

Domanda: Cosa stampa questo programma? Come vengono valutate le espressioni all’interno di cout?

#include <iostream>
using namespace std;

struct Punto {
    int x, y;
};

int main() {
    Punto p = {3, 4};
    Punto array[3] = { {1, 2}, {3, 4}, {5, 6} };
    
    cout << p.x + p.y << endl;
    cout << array[1].x * 2 << endl;
    cout << array[0].x + array[2].y << endl;
    
    return 0;
}

Esercizio 2

Domanda: Cosa stampa il seguente programma?

#include <iostream>
using namespace std;

struct Coordinate {
    int x, y;
};

int main() {
    Coordinate p1 = {5, 3};
    Coordinate p2 = p1;
    
    cout << "x: " << p2.x << "; y: " << p2.y << endl; // prima di modificare p1
    
    p1.x = 6;
    
    cout << "x: " << p2.x << "; y: " << p2.y << endl; // dopo modifica di p2
    
    return 0;
}

Esercizio 3

Domanda: Il seguente programma compila ed esegue? Correggerlo in caso di errori

#include <iostream>
using namespace std;

struct Coordinate {
    int x, y;
};

int main() {
    Coordinate p1 = {5, 3};
    Coordinate p2 = {5, 3};
    
    if(p1 == p2)
    {
        cout << "p1 e p2 sono uguali" << endl;
    } else {
        cout << "p1 e p2 sono diversi" << endl;
    }
    
    return 0;
}

Esercizio 4

Domanda: Il seguente programma compila ed esegue? Correggerlo in caso di errori

#include <iostream>
using namespace std;

struct Indirizzo {
    string via;
    int numero;
};

struct Persona {
    string nome;
    Indirizzo casa;
    int eta;
};

int main() {
    Persona p;
    p.nome = "Anna";
    p.casa.via = "Via Roma";
    p.casa.numero = 42;
    p.eta = 25;
    
    cout << p.nome << " abita in " << p.via << " " << p.numero << endl;
    cout << "Ha " << p.eta << " anni" << endl;
    
    return 0;
}

Esercizio 5

Domanda: Il seguente programma compila ed esegue? Correggerlo in caso di errori

#include <iostream>
using namespace std;

struct Voto {
    string materia;
    int valore;
};

int main() {
    Voto voti[4] = {
        {"Matematica", 8},
        {"Italiano", 7},
        {"Storia", 9}
    };
    
    voti[3].materia = "Inglese";
    voti[3].valore = 6;
    
    cout << voti[3].materia << ": " << voti[3].valore << endl;
    
    return 0;
}

Esercizio 6

Domanda: Cosa stampa questo programma? Motivare la risposta


#include <iostream>
using namespace std;

struct Studente {
    string nome;
    int voti[5];
};

int main() {
    Studente c1 = {"Marco", {8, 7, 9, 6, 10} };
    Studente c2 = {"Lucia", {8, 7, 7, 8, 6} };
    
    cout << "Studente " << c1.nome << ":" << endl;
    for(int i = 0; i < 5; i++) {
        if(c1.voti[i] < 5){  }
        cout << "Voto " << i << ": " << c1.voti[i] << endl;
    }
    
    
    
    return 0;
}