Anteprima
Vedrai una selezione di 1 pagina su 4
Libretto Voto Studenti Pag. 1
1 su 4
D/illustrazione/soddisfatti o rimborsati
Disdici quando
vuoi
Acquista con carta
o PayPal
Scarica i documenti
tutte le volte che vuoi
Estratto del documento

#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;

Dettagli
A.A. 2018-2019
4 pagine
SSD Scienze matematiche e informatiche INF/01 Informatica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher antoniosuperportiere di informazioni apprese con la frequenza delle lezioni di Fondamenti di informatica e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli studi di Genova o del prof Piccialli Francesco.