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
// Autore Vighi Andrea, 150052, stud04
// 18/06/2003 - Esame di fondamenti di informatica, corso di laurea in ingegneria Informatica
#include <iostream.h>
#include <fstream.h>
#include <stdlib.h>
int main (void)
{
struct pendenza
{
int h1, h2, s1, s2;
float disl;
};
int snew;
int sold;
int hnew;
int hold;
int SalitaTot;
int DiscesaTot;
pendenza salita, discesa;
float disl;
ifstream fin ("percorso.txt");
// XXX controllare il buon esito dell'apertura del file puo' essere di aiuto
fin>>sold;
fin>>hold;
salita.disl=0;
discesa.disl=0;
SalitaTot=DiscesaTot=0;
while ((fin>>snew))
{
fin>>hnew;
if (hnew>hold)
{
SalitaTot+=hnew-hold;
disl=(hnew-hold)/(snew-sold+0.0); //XXX il cast funziona, comunque la forma piu' elegante sarebbe: (hnew-hold)/float(snew-sold)
if (disl>salita.disl)
{
salita.h1=hold;
salita.h2=hnew;
salita.s1=sold;
salita.s2=snew;
salita.disl=disl;
}
}
else
{
DiscesaTot+=hold-hnew;
disl=(hold-hnew)/(snew-sold+0.0);
if (disl>discesa.disl)
{
discesa.h1=hold;
discesa.h2=hnew;
discesa.s1=sold;
discesa.s2=snew;
discesa.disl=disl;
}
}
hold=hnew;
sold=snew;
}
cout<<"dislivello in salita: "<<SalitaTot<<" metri"<< '\n';
cout<<"dislivello in discesa: "<<DiscesaTot<<" metri"<< '\n';
cout<<"maggior dislivello in salita tra "<<salita.s1<<" ("<<salita.h1<<')';
cout<<" e "<< salita.s2<<" ("<<salita.h2<<')'<< " metri"<<'\n';
cout<<"maggior dislivello in discesa tra "<<discesa.s1<<" ("<<discesa.h1<<')';
cout<<" e "<< discesa.s2<<" ("<<discesa.h2<<')'<< " metri"; //XXX anche un a-capo ci stava bene
}
Se avete commenti o osservazioni su questa pagina
mandate un messaggio di posta elettronica a
bertozzi@CE.UniPR.IT