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 non calcola i dislivelli e sbaglia la formula delle pendenze
//autore: Libe' Alessia , 143054, alessia.libe@tin.it , stud11
// mercoled 18 giugno 2003 - esame di Fondamenti di Informatica A, corso di laurea in Ingegneria Informatica
#include<iostream.h>
#include<fstream.h>
#include<stdlib.h>
int main()
{
ifstream f ("percorso.txt");
if (!f){
cerr<<"Errore: il file non puo' essere aperto.\n";
exit(1);
}
int dist1=0,dist2=0, max_dists=0, max_distd=0;
int quota1=0, quota2=0, max_quotas=0, max_quotad=0;
float pend=0, max_pends=0, max_pendd=0;
int n=0, d=0, q=0;
int ids=0, idd=0, iqs=0, iqd=0;
while (!f.eof()){ // FIXME attenzione che eventuali righe vuote, spazi, etc. le possono causare problemi
f>>d>>q;
if ((q-quota1)>0){ //FIXME quota1 e dist1 andavano lette la prima volta prima di entrare nel ciclo!
cout<<"\n - dislivello in salita: "<<q-quota1<<" metri.\n";
if (n){ // XXX e' un trucco, era piu' sempolice fare come dicevo sopra
dist2=dist1;
quota2=quota1;
dist1=d;
quota1=q;
pend=float(quota1)/float(dist1); //FIXME magari la pendenza e' il rapporto tra i delta....
if (pend>max_pends){
max_pends=pend;
max_dists=d;
max_quotas=q;
ids=dist2-dist1 ;
iqs=quota2-quota1;
}
}
else{
dist1=d; //FIXME questa coppia di istruzioni e' ripetuta 4 volte nel file, dato che viene comunque eseguita
quota1=q;// indipendentemente dalle condizioni, perche' non la mette una sola volta in fondo al ciclo???
}
}
else{
cout<<"\n - dislivello in discesa: "<<-(q-quota1)<<" metri.\n";
if (n){
dist2=dist1;
quota2=quota1;
dist1=d;
quota1=q;
pend=float(quota1)/float(dist1); //FIXME magari la pendenza e' il rapporto tra i delta....
if (pend>max_pends){
max_pends=pend;
max_dists=d;
max_quotas=q;
ids=dist2-dist1 ;
iqs=quota2-quota1;
}
}
else{
dist1=d;
quota1=q;
}
}
n++;;
}
// FIXME manca il calcolo dei dislivelli in salita e in discesa!
cout<<"\n - Maggior pendenza in salita: "<<max_pends;
cout<<"\n tra una distanza di " << max_dists<<" e "<< max_dists-ids<<" metri.";
cout<< "\n metri ed ad una quota compresa tra "<<max_quotas<<" e "<< max_quotas-iqs<<" metri.\n";
cout<<"\n - Maggior pendenza in salita: "<<max_pendd;
cout<<"\n tra una distanza di " << max_distd<<" e "<< max_dists-idd<<" metri.";
cout<< "\n metri ed ad una quota compresa tra "<<max_quotad<<" e "<< max_quotad-iqd<<" metri.\n";
f.close();
}
Se avete commenti o osservazioni su questa pagina
mandate un messaggio di posta elettronica a
bertozzi@CE.UniPR.IT