Correzione prova pratica del 18 giugno 2003
Correzione prova pratica del 18 giugno 2003
Istruzioni:
il commento iniziale rappresenta il giudizio complessivo sul programma. Nei commenti trovate:
- FIXME: segnalazione di un errore, non necessariamente sono tutti segnalati e non necessariamente sono tutti presi in considerazione
per il voto finale
- TODO: segnala l'assenza di parti di codice
- XXX: segnala qualcosa di non chiaro o inutile ai fini del codice, commenti di ordine generale, errori di battitura o suggerimenti
Il codice presentato non è necessariamente identico a quello consegnato in quanto possono essere state effettuate modifiche per
renderlo compilabile e/o per la corretta indentazione.
//XXX corretto a parte la scelta dei tipi di dato e condizione ciclo principale
//Sartori Christian 110264 dis15
//18/06/03 Esame di Fondamenti di informatica1
//Corso laurea ingegneria elettronica schristian@inwind.it
#include <iostream.h>
#include <fstream.h>
int d1, d; //FIXME le variabili globali vanno in generale evitate, in questo caso e' perfettamente inutile definire
int h1, h; // queste come variabili globali
float Dh, Dd; //FIXME queste andavano come int e si doveva sapere come fare i cast
int salita=0;
int discesa=0;
float max=0;
float min=0;
int d1max, dmax;
int h1max, hmax;
int d1min, dmin;
int h1min, hmin;
const char * file = "percorso.txt";
main(){
ifstream fin(file);
if (!fin)
{
cerr << "Errore: file " << file <<" non puo' venire "
"aperto.\n";
exit(1);
}
fin>>d1;
fin>>h1;
while(fin){ //FIXME in questa maniera righe vuote nel file creano problemi.
fin>>d;
fin>>h;
Dd=d-d1;
Dh=h-h1;
if(Dh>=0) {
salita+=Dh; //somma le salie
if((Dh/Dd)>max && Dd!=0) {
max=(Dh/Dd); //Memorizza valore max di pendenza
d1max=d1;
h1max=h1;
dmax=d;
hmax=h;}
}
else {
discesa-=Dh; //somma le discese
if((-Dh/Dd)>min && Dd!=0 ){
min=(Dh/Dd); //Memorizza valore min di pensenza
d1min=d1;
h1min=h1;
dmin=d;
hmin=h;}
}
d1=d; //Passa a d1 l`ultimo valore letto di distanza
h1=h; //Passa a h1 l`ultimo valore letto di altezza
}
cout << "Dislivello in salita: " << salita << endl;
cout << "Dislivello in discesa: "<< discesa << endl;
cout << "Maggior pendenza in salita tra " << d1max << " (" << h1max;
cout<< ") e " << dmax << " (" << hmax << ") metri " << endl;
cout << "Maggior pendenza in discesa tra " << d1min << " (" << h1min;
cout<< ") e " << dmin << " (" << hmin << ") metri " ;
fin.close();
}
Se avete commenti o osservazioni su questa pagina
mandate un messaggio di posta elettronica a
bertozzi@CE.UniPR.IT