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 lacune in utilizzo variabili
//AGNESE ROSI 143280

//whippet59@hotmail.com

//dis12

//18/06/03 - esame di Fondamenti di Informatica

//corso di laurea in ing.elettronica


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

float massima(float,float);


int main()
{
  ifstream fin("percorso.txt");
  if(!fin)//gestione errore apertura file

  {cout<<"Impossibile aprire il file\n"<<endl;} //FIXME e quindi magari dovevo uscire dal programma!

  int punto;
  int quota;
  int discesa;
  int salita;
  int prec_quota;
  int prec_pt;
  float pendenza0,pendenza1;
  float pendenza2,pendenza3;
  float max_pend_sal;
  float max_pend_disc;

  while(fin>>punto)
  {
    fin>>quota;
    prec_pt=punto;
    prec_quota=quota;
    ++punto; //XXX ????

    ++quota;
    if(quota>prec_quota) //XXX lo sara' sempre visto le 4 righe precedenti

    {
      salita+=quota-prec_quota;
      pendenza0=(quota-prec_quota)/(punto-prec_pt+0.0);
      int pp_quota=prec_quota;
      int pp_pt=prec_pt;
      ++prec_quota; //XXX sembra quasi che lei stia confondendo indici di array e variabili!

      ++prec_pt;
      pendenza1=(prec_quota-pp_quota)/(prec_pt-pp_pt+0.0);
      max_pend_sal=massima(pendenza0,pendenza1);
    }
    else if(quota<prec_quota)
    {
      discesa+=prec_quota-quota;
      pendenza2=(quota-prec_quota)/(punto-prec_pt+0.0);
      int pp_quota=prec_quota;
      int pp_pt=prec_pt;
      ++prec_quota;
      ++prec_pt;
      pendenza3=(prec_quota-pp_quota)/(prec_pt-pp_pt+0.0);
      max_pend_disc=massima(pendenza2,pendenza3);
    }
  }

  cout<<"Dislivello in salita = "<<salita<<" metri."<<endl;
  cout<<"Dislivello in discesa = "<<discesa<<" metri."<<endl;
  cout<<"Massima pendenza rilevata in salita = "<<max_pend_sal<<endl;
  cout<<"Massima pendenza rilavata in discesa = "<<max_pend_disc<<endl;

  fin.close();
  return 0;
}



float massima (float p0,float p1)//funz.che restituisce la massima pendenza

{                                //fra le due confrontate

  if (p0>p1) return p0;
  else return p1;
}






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