PROGRAMMIAMO
C++ - Altro esempio di struct
Strutture con variabili di tipo diverso e vettori

Consideriamo adesso un esempio un po' più complesso di uso delle struct:

#include <cstdlib>
#include <iostream>

using namespace std;

struct dati_anagrafici
{
char nome[100];
char cognome[100];
char sesso;
int anno;
int mese;
int giorno;
char luogo[100];
};

int main(int argc, char *argv[])
{
dati_anagrafici persona;
cout<<"Fornisci i tuoi dati anagrafici\n";
cout<<"Nome: ";
cin.getline(persona.nome,100);
cout<<"Cognome: ";
cin.getline(persona.cognome,100);
cout<<"Sesso (m/f): ";
cin>>persona.sesso;
cout<<"Anno Mese Giorno di nascita: ";
cin>>persona.anno;
cin>>persona.mese;
cin>>persona.giorno;
cin.ignore();
cout<<"Luogo di nascita: ";
cin.getline(persona.luogo,100);

cout<<"\nRIEPILOGO DATI:\n";
cout<<persona.nome<<" "<<persona.cognome<<" ";
cout<<"nat";
if (persona.sesso=='m')
cout<<"o";
else
cout<<"a";
cout<<" a "<<persona.luogo;
cout<<" il "<<persona.giorno<<"/"<<persona.mese<<"/"<<persona.anno<<"\n";

system("PAUSE");
return EXIT_SUCCESS;
}

La figura successiva mostra il risultato dell'esecuzione del programma:

Analizziamo ora il programma cominciando dalla definizione del tipo di struttura:

struct dati_anagrafici
{
char nome[100];
char cognome[100];
char sesso;
int anno;
int mese;
int giorno;
char luogo[100];
};

Il tipo si chiama dati_anagrafici e i suoi membri sono costituiti da variabili e da vettori di diversi tipi. L'istruzione seguente serve per dichiarare un oggetto di nome persona di tipo dati_anagrafici:

dati_anagrafici persona;

A questo punto i dati anagrafici della persona vengono acquisiti con una serie di cin e di cin.getline (vedi la spiegazione sull'uso di cin.getline):

cout<<"Fornisci i tuoi dati anagrafici\n";
cout<<"Nome: ";
cin.getline(persona.nome,100);
cout<<"Cognome: ";
cin.getline(persona.cognome,100);
cout<<"Sesso (m/f): ";
cin>>persona.sesso;
cout<<"Anno Mese Giorno di nascita: ";
cin>>persona.anno;
cin>>persona.mese;
cin>>persona.giorno;
cin.ignore();
cout<<"Luogo di nascita: ";
cin.getline(persona.luogo,100);

Si noti che i membri della struct vengono usati esattamente come variabili dello stesso tipo (per esempio appunto le stringhe di char vengono acquisite con l'istruzione cin.getline.

L'istruzione cin.ignore() è utile quando si vuole acquisire una stringa dopo aver acquisito una variabile numerica e serve per eliminare il carattere di andata a capo che altrimenti verrebbe acquisito nella stringa.

Infine nella visualizzazione del riepilogo dati si noti l'if che serve per aggiungere una 'a' oppure una 'o' dopo 'nat' a seconda del sesso ('m' o 'f') della persona:

cout<<"\nRIEPILOGO DATI:\n";
cout<<persona.nome<<" "<<persona.cognome<<" ";
cout<<"nat";
if (persona.sesso=='m')
cout<<"o";
else
cout<<"a";
cout<<" a "<<persona.luogo;
cout<<" il "<<persona.giorno<<"/"<<persona.mese<<"/"<<persona.anno<<"\n";

 

 

 

link precedente - successiva

Sito realizzato in base al template offerto da

http://www.graphixmania.it