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 corretto a parte la scelta dei tipi di dato e condizione ciclo principale
//Sartori Christian 110264 dis15

//18/06/03 Esame di Fondamenti di informatica1

//Corso laurea ingegneria elettronica schristian@inwind.it

#include <iostream.h>
#include <fstream.h>

int d1, d; //FIXME le variabili globali vanno in generale evitate, in questo caso e' perfettamente inutile definire

int h1, h; // queste come variabili globali

float Dh, Dd; //FIXME queste andavano come int e si doveva sapere come fare i cast

int salita=0;
int discesa=0;
float max=0;
float min=0;
int d1max, dmax;
int h1max, hmax;
int d1min, dmin;
int h1min, hmin;
const char *  file = "percorso.txt";

main(){

  ifstream fin(file);
  if (!fin)
  {
    cerr << "Errore: file " << file <<" non puo' venire "
      "aperto.\n";
    exit(1);
  }

  fin>>d1;
  fin>>h1;
  while(fin){ //FIXME in questa maniera righe vuote nel file creano problemi.

    fin>>d;
    fin>>h;
    Dd=d-d1;
    Dh=h-h1;
    if(Dh>=0) {
      salita+=Dh;              //somma le salie

      if((Dh/Dd)>max && Dd!=0) {
  max=(Dh/Dd);     //Memorizza valore max di pendenza

  d1max=d1;
  h1max=h1;
  dmax=d;
  hmax=h;}
    }
    else {
      discesa-=Dh;            //somma le discese

      if((-Dh/Dd)>min && Dd!=0 ){
  min=(Dh/Dd);    //Memorizza valore min di pensenza

  d1min=d1;
  h1min=h1;
  dmin=d;
  hmin=h;}
    }
    d1=d;                       //Passa a d1 l`ultimo valore letto di distanza

    h1=h;                       //Passa a h1 l`ultimo valore letto di altezza

  }
  cout << "Dislivello in salita: " << salita << endl;
  cout << "Dislivello in discesa: "<< discesa << endl;
  cout << "Maggior pendenza in salita tra " << d1max << " (" << h1max;
  cout<<  ") e " << dmax << " (" << hmax << ") metri " << endl;
  cout << "Maggior pendenza in discesa tra " << d1min << " (" << h1min;
  cout<<  ") e " << dmin << " (" << hmin << ") metri " ;

  fin.close();
}



Se avete commenti o osservazioni su questa pagina
mandate un messaggio di posta elettronica a bertozzi@CE.UniPR.IT