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 utilizzo float ove non necessario, per il resto corretto
//autore: Minari Andrea, 149844, STUD02, e-mail: Ivanomin@tin.it
//18/06/03 - Esame di fondamenti di Informatica, Corso di laurea in ingegneria Informatica
#include <fstream.h>
#include <stdlib.h>
#include <iostream.h>
int main ()
{
int distanza1, distanza2,quota1, quota2,salita=0, discesa=0,x;
int iquota1, iquota2, isalita1, isalita2, idiscesa1, idiscesa2, idquota1, idquota2;
float max=0, min=0, psalita=0, pdiscesa=0,y,z;
ifstream percorso("percorso.txt");
if (!percorso) {
cerr << "Errore: file input non puo' venire aperto.\n";
exit(1);
}
percorso >> distanza2;
percorso >> quota2;
while ( percorso>>x)
{ distanza1=distanza2; //XXX poteva mettere questa parte in fondo al ciclo e cosi' risparmiava la variabile di appoggio x
quota1=quota2;
distanza2=x;
percorso >> quota2;
y=quota2-quota1; //FIXME y e z potevano/dovevano essere int, forse non si ricorda come si fanno i cast?
z=distanza2-distanza1;
if (quota2<=quota1)
{discesa+=(quota1-quota2);
pdiscesa=(y/z);}
else {
salita+=(quota2-quota1);
psalita=(y/z);
}
if (pdiscesa<min) //XXX forse era meglio metterlo all'interno degli if precedenti altrimenti le
{min=pdiscesa; // condizioni vengono valutate ogni volta
idiscesa1=distanza1;
idiscesa2=distanza2;
idquota1=quota1;
idquota2=quota2;
}
if (psalita>max) //XXX come sopra
{
max=psalita;
isalita1=distanza1;
isalita2=distanza2;
iquota1=quota1;
iquota2=quota2;
}
}
cout<< "Dislivello in salita: " << salita << " metri"<< endl;
cout<< "Dislivello in discesa: " << discesa << " metri"<< endl;
cout<< "Maggior Pendenza in salita: " << "tra "<< isalita1 << " (" << iquota1 << ") " << "e " << isalita2 << " (" << iquota2 << ") metri" << endl;
cout<< "Maggior Pendenza in discesa: " << "tra "<< idiscesa1 << " (" << idquota1 << ") " << "e " << idiscesa2 << " (" << idquota2 << ") metri" << endl;
return 0;
}
Se avete commenti o osservazioni su questa pagina
mandate un messaggio di posta elettronica a
bertozzi@CE.UniPR.IT