Correzione prova pratica del 17 settembre 2003

Correzione prova pratica del 17 settembre 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 (9.5) lieve non aderenza al testo e non corretta dimensione della stringa
//Rossi Leonardo, 150080, rougeleone@libero.it, computer portatile

// 17/09/03 - Esame di Fondamenti di Informatica A, corso di laurea in Ingegneria Informatica

//

//compilatore usato: Borland C++ 3.1

#include<iostream.h>

#include<string.h>

//

char stringa[80]; //FIXME anche lei e' uno di quelli che i caratteri di fine stringa li conserva in tasca?

int n;
//

void acquisisci_stringa();
int trova_periodo();
//-----------------------------------------------------------------------------

//-------------------------------------------------------------------------------

main()                                                                         //

{                                                                              //

  cout<<"ISTRUZIONI: \n\tspazio per terminare \n\tMAX caratteri accetati: 80\n";//

  //FIXME peccato che il testo fosse differente

  do{                                                                           //

    acquisisci_stringa();                                                         //

    cout<<"\nIl periodo + piccolo: "<<trova_periodo()<<endl;                      //

  }while(stringa[0]!=' '); //FIXME cosi' anche quando viene inserito ' ' viene calcolato il periodo

                           //      la condizione si doveva mettere anche altrove

  return 0;                                                                      //

}                                                                              //

//-------------------------------------------------------------------------------

//-----------------------------------------------------------------------------


void acquisisci_stringa()  //BLOCCO 1:acquisizione della stringa

{
  cout<<"\n Inserisci la stringa da analizzare: ";
  cin.getline(stringa,80);
  n=strlen(stringa);
}

int trova_periodo() //BLOCCO 2:  trovare il periodo pił piccolo

{
  int periodo_da_testare=0,p=0;
  for(int i=1;i<=n;i++)
  {
    if(!(n%i))
    {
      p=0;
      for(int j=i;j<n;j+=i,p++)
      {
  if(!strncmp(stringa,stringa+j,i)) { periodo_da_testare++; }
      }
    }
    if(p==(periodo_da_testare)) {  return i;}
    periodo_da_testare=0;
  }
  return n;
}


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