Elenco prove pratiche di cui è disponibile la correzione online


Da questa pagina potete accedere ad alcune delle correzioni delle prove pratiche d'esame di Fondamenti di Informatica A. Il servizio è ancora sperimentale. Per accedere alla vostra prova pratica dovete selezionare il vostro numero di matricola.

Inoltre, dovete inserire il vostro numero di matricola come utente e la password che vi è stata spedita via posta elettronica.

Fa fede l'ultima password che vi è stata spedita.


Elenco prove pratiche per numero di matricola:

Matricola:

Risultati

Sono andati maluccio: Naturalmente per passare l'orale mi aspetto che siate decisamente preparati!

Possibile soluzione:


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


int main(int argc, char **argv){
  char i;
  bool initword=false, presenzachar=false;
  int nword=0; // numero di parole che contengono il carattere
  int lw=0;      // lunghezza parola
  int minl=INT_MAX, maxl=INT_MIN;

  // leggo nome file e carattere da utilizzare da riga di comando
  // naturalmente altre scelte sono comunque corrette
  if(argc<3){
    cout << "Utilizzo: " << argv[0] << " <nome file da aprire> <carattere da utilizzare> \n";
    exit(-1);
  }

  ifstream fin(argv[1]); // apro il file richiesto
  if(!fin){
    cout << "Errore non riesco ad aprire " << argv[1] << "\n";
    exit(-1);
  }

  char c=argv[2][0]; //carattere da utilizzare

  while(fin.get(i)){ //XXX sto leggendo un carattere per volta!

    if(isalpha(i)){ // se e' vera e' un carattere
      initword=true; // ho trovato una parola
      if(i==c)
  presenzachar=true; // la parola contiene il carattere in esame
      ++lw; // aggiorno lunghezza parola
    }else{

      if(initword){ // se initword e' vera avevo trovato una parola
  if(presenzachar){ // controllo la presenza del carattere che sto cercando
    ++nword;  // aggiorno il numero di parole trovate
    // aggiorno lunghezza massima e minima
    if(lw<minl)
      minl=lw;
    if(lw>maxl)
      maxl=lw;
  }
  // reset campi 
  initword=false;
  presenzachar=false;
  lw=0;
      }
    }
  }

  // devo comunque controllare un'eventuale ultima parola
  if(initword&&presenzachar){
    ++nword;
    if(lw<minl)
      minl=lw;
    if(lw>maxl)
      maxl=lw;
  }


  // stampo quanto richiesto
  if(nword)
    cout << "Numero parole contenenti '" << c << "':" << nword << "\n"
      << "Massima lunghezza parola    :" << maxl << "\n"
      << "Minima lunghezza parola     :" << minl << "\n";
  else
    cout << "Non ho trovato parole che contengono il carattere in esame\n";
}



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