#include <iostream>
#include <cstdlib>
using namespace std;
///esempio di codice in C++ che utilizzando funzioni, procedure e l'operatore new
///dichiara e prende in input una struttura di nome student
///composta da 4 campi: nome, genere, anni, media; l'oggetto della struttura, la sua istanza è un array dinamico
///con la dimensione inserita in fase di runtime. la struttura vuol rappresentare una classe
///di allieve/i, con i campi che rappresentano i loro nomi, genere, età e media scolastica.
///quindi si popola e si stampa a video. scopo del programma è quello di ricercare l'allieva/oggetto
///con la media più alta. questa informazione è restituita la main e stampata in output.
struct student
{
string nome;
char genere;
int anni;
float media;
} ; ///istanza della struttura, un suo oggetto
student *load(student *vt, int dim) ///definiamo la funzione che popola la struttura
{
int i;
for(i=0; i<dim; i++)
{
cin.ignore(); ///ripulisce lo stream di input
cout<<"inserisci il nome: "<<endl;
getline(cin,vt[i].nome);
cout<<"inserisci il genere: "<<endl;
cin>>vt[i].genere;
cout<<"inserisci gli anni: "<<endl;
cin>>vt[i].anni;
cout<<"inserisci la media: "<<endl;
cin>>vt[i].media;
cout<<endl;
}
return vt; ///valore di ritorno, la struttura popolata
}
void print(student *vt, int dim) ///definiamo la procedura che stampa la struttura.
{
int i;
for(i=0; i<dim; i++)
{
cout<<"il nome e': "<<vt[i].nome<<endl;
cout<<"di genere: "<<vt[i].genere<<endl;
cout<<"di anni: "<<vt[i].anni<<endl;
cout<<"con media: "<<vt[i].media<<endl;
cout<<endl;
}
}
student searc(student *vt, int dim) ///definiamo la funzione che ricerca la media più alta
{
int i, j, mx;
student ma;
///start
mx=vt[0].media;
ma=vt[0];
for(i=0; i<dim; i++)
{
if(vt[i].media>mx)
{
ma=vt[i];
}
}
return ma; ///valore di ritorno, l'allieva/o con la media maggiore.
}
int main()
{
int n;
cout<<"inserisci il numero degli studenti: "<<endl;
cin>>n;
while(n<2)
{
cout<<"errore, inserisci un numero accettabile: "<<endl;
cin>>n;
}
cout<<endl;
student *v=new student [n];///oggetto della struttura, spazio di memoria dinamico
v=load(v,n); ///si invoca la funzione che popola la struttura
cout<<endl;
print(v,n); ///procedura per la stampa
cout<<endl;
student x;
x=searc(v,n); ///si invoca la funzione ricerca madia max.
///output
cout<<"l'allievo con media maggiore: "<<x.nome<<endl;
cout<<"di genere: "<<x.genere<<endl;
cout<<"di anni: "<<x.anni<<endl;
cout<<"con media: "<<x.media<<endl;
delete [] v; ///si libera memoria
cout<<endl;
cout<<"Potere ai Tecnici"<<endl;
cout<<"P.C.++"<<endl;
cout<<endl;
system("PAUSE");
return 0;
}