#include <iostream>
#include <cstdlib>
#include <string>
using namespace std;
///esempio di utilizzo delle strutture in C++
///l'istanza è un array dinamico con la dimensione inserita in fase di runtime
struct persona ///si dichiara una struttura di nome persona con 3 campi
{
string nome;
int anni;
char genere;
} ;
persona *load(persona *vt, int dim) ///procedura che popola la struttura
{///l'accesso alla struttura avviene tramite l'istanza
int i;
for(i=0; i<dim; i++)
{
cin.ignore(); ///ripulisce lo stream di input
cout<<"inserisci il nome della persona: "<<endl;
getline(cin,vt[i].nome); ///nome e cognome
cout<<"inserisci l'eta della persona: "<<endl;
cin>>vt[i].anni;
cout<<"inserisci il genere: "<<endl;
cin>>vt[i].genere;
}
return vt; ///valore di ritorno, l'array popolato
}
void print(persona *vt, int dim) ///procedura per la stampa
{
int i;
for(i=0; i<dim; i++)
{
cout<<"il nome della persona e': "<<vt[i].nome<<endl;
cout<<"di anni: "<<vt[i].anni<<endl;
cout<<"genere: "<<vt[i].genere<<endl;
cout<<endl;
}
}
int main()
{
int n;
cout<<"inserisci il numero di persone: "<<endl;
cin>>n;
while(n<2)
{
cout<<"errore, inserire un numero accettabile: "<<endl;
cin>>n;
}
cout<<endl;
persona *v=new persona [n]; ///spazio di memoria dinamico, un array che istanzia la struttura.
v=load(v,n); ///si invoca la procedura che popola la struttura
cout<<endl;
print(v,n); ///si invoca la procedura che stampa la struttura.
cout<<endl;
cout<<"Potere ai Tecnici"<<endl;
cout<<"P.C.++"<<endl;
cout<<endl;
system("PAUSE");
return 0;
}