#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 fiume ///si dichiara una struttura di nome fiume con 4 campi
{
string nome;
string nazione;
int lunghezza;
bool navigabile;
} ;
fiume *load(fiume *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 del fiume: "<<endl;
getline(cin,vt[i].nome); ///nome e cognome
cout<<"inserisci la nazione: "<<endl; ///anche piΓΉ nazioni contemporaneamente
getline(cin,vt[i].nazione);
cout<<"inserisci la lunghezza: "<<endl;
cin>>vt[i].lunghezza;
cout<<"inserisci se navigabile:"<<endl; ///digita 0 se non navigabile, 1 se navigabile.
cin>>vt[i].navigabile;
cout<<endl;
}
return vt; ///valore di ritorno, l'array popolato
}
void print(fiume *vt, int dim) ///procedura per la stampa
{
int i;
for(i=0; i<dim; i++)
{
cout<<"il nome del fiume e': "<<vt[i].nome<<endl;
cout<<"scorre in: "<<vt[i].nazione<<endl;
cout<<"di lunghezza: "<<vt[i].lunghezza<<endl;
if(vt[i].navigabile==0)
{
cout<<"non navigabile"<<endl;
}
else
{
cout<<"navigabile"<<endl;
}
cout<<endl;
}
}
int main()
{
int n;
cout<<"inserisci il numero di fiumi: "<<endl;
cin>>n;
while(n<2)
{
cout<<"errore, inserire un numero accettabile: "<<endl;
cin>>n;
}
cout<<endl;
fiume *v=new fiume [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;
}