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