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