vuoi
o PayPal
tutte le volte che vuoi
#include<iostream>
#include<conio.h>
#include<cmath>
#include<windows.h>
#include<time.h>
#include<cstdlib>
#include<stdio.h>
#include<iomanip>
#include<string.h>
#include<fstream>
#define MAX 35
using namespace std;
/*---------------------------------------------------------
Sia dato su un file una sequenza di NomiStudenti (tutti diversi tra loro) e
VotoFondamenti
Stampare a video gli studenti che hanno preso il voto maggiore quelle che hanno preso il
voto minore all'esame di Fondamenti.
Esempio:
Marco
28
Gina
20
Gianna
30 e lode
Carlo
28
Massimo
20
OUTPUT
Gli studenti che hanno preso il voto maggiore sono: Gianna (30 e lode); Gli studenti che
hanno preso il voto minore sono Gina e Massimo (20).
-----------------------------------------------------------*/
struct Libretto
{ string Nome;
int Voto;
bool Lode;
};
void ChiediNomeFile(char *NomeFile);
void ApriFile(fstream &Pf, char *NomeFile);
void ChiudiFile(fstream &Pf);
void Dealloca_Libretto(Libretto *&Studenti);
void Alloca_Libretto(fstream &Pf,Libretto *&Studenti, int &Dim);
void Carica_Elementi(fstream &Pf,Libretto *&Studenti);
int Trova_Minimo(Libretto *&Studenti, int &Dim);
int Trova_Massimo(Libretto *&Studenti, int &Dim);
main()
{ fstream Pf;
Libretto *Studenti;
char NomeFile[MAX];
int Dim;
int Pmax,Pmin;
ChiediNomeFile(NomeFile);
ApriFile(Pf,NomeFile);
Alloca_Libretto(Pf,Studenti,Dim);
Carica_Elementi(Pf,Studenti);
ChiudiFile(Pf);
Pmin=Trova_Minimo(Studenti,Dim);
Pmax=Trova_Massimo(Studenti,Dim);
cout<<"Il Punteggio Minimo l'ha preso "<<Studenti[Pmin].Nome<<" voto =
"<<Studenti[Pmin].Voto<<endl;
cout<<"Il Punteggio Massimo l'ha preso = "<<Studenti[Pmax].Nome<<" voto =
"<<Studenti[Pmax].Voto;
if(Studenti[Pmax].Lode==true){ cout<<" e lode"<<endl; }
Dealloca_Libretto(Studenti);
system("pause");
}
//---------------------------------------------------------------------------------------
------
void ChiediNomeFile(char *NomeFile)
{ cout<<"Dammi il nome del file su cui lavorare ricorda di inserire anche l'estensione
del file Es=xxx.txt= ";
gets(NomeFile);
}
//---------------------------------------------------------------------------------------
-------------
void ApriFile(fstream &Pf, char *NomeFile)
{ Pf.open(NomeFile,ios::in);
if(!Pf)
{ cout<<"errore impossibile aprire";
exit(1);
}
}
void ChiudiFile(fstream &Pf)
{ Pf.close();
}
void Alloca_Libretto(fstream &Pf,Libretto *&Studenti, int &Dim)
{ int i=0;
char Buffer1[MAX];
char Buffer2[MAX];
while(!Pf.eof())
{ Pf.getline(Buffer1,MAX);
Pf.getline(Buffer2,MAX);
i++;
}
Dim=i;
Studenti = new (nothrow) Libretto[Dim];
Pf.seekg(0,ios::beg);
}
void Dealloca_Libretto(Libretto *&Studenti)
{ delete []Studenti;
}
void Carica_Elementi(fstream &Pf,Libretto *&Studenti)
{ int i=0;
char Buffer2[MAX];
while(!Pf.eof())
{ getline(Pf,Studenti[i].Nome);
Pf.getline(Buffer2,MAX);
if(strcmp(Buffer2,"30 e lode") == 0)
{ Buffer2[2]='\0';
Studenti[i].Voto=atoi(Buffer2);
Studenti[i].Lode=true;
}
else
{ Studenti[i].Voto=atoi(Buffer2);
Studenti[i].Lode=false;
}
/* cout<<Studenti[i].Nome<<endl;
cout<<Studenti[i].Voto<<endl;
cout<<Studenti[i].Lode<<endl; */
i++;
}
}
int Trova_Massimo(Libretto *&Studenti, int &Dim)
{ int i;
int Max=Studenti[0].Voto;
int Pmax;
bool trovato=false;
for(i=0; i<Dim and trovato==false; i++)
{ if(Studenti[i].Lode == true)
{ trovato=true;
Pmax=i;
}
else
{ if(MAX<Studenti[i].Voto)
{ Max=Studenti[i].Voto;
Pmax=i;
}
}
}
return Pmax;
}
int Trova_Minimo(Libretto *&Studenti, int &Dim)
{ int i;
int Min=Studenti[0].Voto;
int Pmin;
for(i=0; i<Dim; i++)
{ { if(Min>Studenti[i].Voto)
{ Min=Studenti[i].Voto;
Pmin=i;