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
// autore: <GALLINARI> <DANIELE>, <110604>,<DIS13>

// <18/06/2003> - esame di Fondamenti di Informatica, corso di laurea in Ingegneria elettronica


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


ifstream fin ("percorso.txt");


main () {
  int dist1;
  int dist;
  int h1;
  int h;
  int disldist=0; // distanza tra due punti di cui misuro il dislivello

  float dislh=0;  // dislivello

  int salita=0;   // viene incrementata del valore del dislivello (se dislivello positivo)

  int discesa=0;  // viene incrementata del valore del dislivello (se dislivello negativo)

  float pendsalita=0; // pendenza del tratto considerato in salita

  float penddiscesa=0; // pendenza del tratto considerato in discesa

  float pendsalitamax=0; // viene aggornata ogni volta che ho un tratto con pendenza in salita maggiore

  float penddiscesamax=0;// viene aggornata ogni volta che ho un tratto con pendenza in discesa maggiore

  int hmin=0; // valore dell'altezza minore nel tratto di max pendenza in salita

  int hmax=0; //  valore dell'altezza minore nel tratto di max pendenza in salita

  int distmin=0; // valore del punto di arrivo nel tratto a max pendenza in salita

  int distmax=0; // valore del punto di partenza nel tratto a max pendenza in salita

  int dist1min=0; // valore del punto di arrivo nel tratto a max pendenza in salita

  int dist1max=0; // valore del punto di partenza nel tratto a max pendenza in discesa

  int h1min=0; // valore dell'altezza maggiore nel tratto di max pendenza in discesa

  int h1max=0; // valore dell'altezza minore nel tratto di max pendenza in discesa


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

  fin >> dist1;
  fin >> h1;


  while (fin>>dist>>h) {
    disldist = dist-dist1;
    dislh = h-h1; //XXX si poteva anche evitare di utilizzare un float per dislh 

    dislh+=0.0; //XXX inutile

    if (dislh>=0) {salita += dislh;
      pendsalita = (dislh/disldist);
      if(pendsalita>=pendsalitamax) { pendsalitamax=pendsalita;
  distmax=dist1;
  distmin=dist;
  hmin=h1;
  hmax=h;}}
  if (dislh<0)  {discesa += dislh;
    penddiscesa = (dislh/disldist);
    if(penddiscesa<=penddiscesamax) { penddiscesamax=penddiscesa;
      dist1max=dist1;
      dist1min=dist;
      h1min=h1; 
      h1max=h; }}
      dist1 = dist;
      h1 = h; 
  }

  cout << "dislivello in salita: " << salita << " metri" << endl; 
  cout << "dislivello in discesa: " << -(discesa) << " metri" << endl; 
  cout << "maggior pendenza in salita tra " << distmax << " (" << hmin  <<") e " << distmin  <<" (" << hmax  << ") metri " <<endl;
  cout << "maggior pendenza in discesa tra "<< dist1max <<" (" << h1min <<") e " << dist1min <<" (" << h1max << ") metri " <<endl;
}


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