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: 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