Advertisement
fabrizio17

For maurito new

Feb 20th, 2020
137
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.17 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3. #include <string.h>
  4. using namespace std;
  5. typedef char stringa[255];
  6.  
  7. void contaParole(stringa nomeFile, int &num_parole);
  8. void leggiFile(stringa nomeFile, stringa parole[]);
  9. void mostraVett(stringa parole[], int num_parole);
  10. void scambiaChar(stringa vettore,int a,int b);
  11. void ordinaParolaAlf(stringa parola, int len_parola);
  12. int flen_parola_Norep(stringa parola,int &cont);
  13. void Riemp_VettIndex(stringa parola,int vettoreOut[],int len_parola);
  14. void fOccorrenze_Vett(stringa parola,int parola_index[],int len_parola,int lenParNorep,int vettOut[]);
  15.  
  16. int main()
  17. {
  18.     int num_parole;
  19.     stringa *parole, fileF1;
  20.    
  21.     cout<<"Inserisci il nome del file: ";
  22.     cin>>fileF1;
  23.    
  24.     contaParole(fileF1,num_parole);
  25.     parole = new stringa[num_parole];
  26.     leggiFile(fileF1,parole);
  27.     for(int p=0;p<num_parole;p++)
  28.     {
  29.         stringa parola;
  30.         strcpy(parola,parole[p]);
  31.         int len_parola=strlen(parola);
  32.        
  33.         //Ordina alfabeticamente le parole.
  34.         ordinaParolaAlf(parola,len_parola);
  35.         strcpy(parole[p],parola);
  36.        
  37.         //Riempi il vettore contenente gli indici.
  38.         int lenParNorep;
  39.         flen_parola_Norep(parola,lenParNorep);
  40.         int parola_index[lenParNorep];
  41.         Riemp_VettIndex(parola,parola_index,len_parola);
  42.        
  43.         //Riempi il vettore contenente le ripetizioni.
  44.         int Occorrenze_Vett[lenParNorep];
  45.         fOccorrenze_Vett(parola,parola_index,len_parola,lenParNorep,Occorrenze_Vett);
  46.         cout<<lenParNorep<<" ";
  47.     }
  48.    
  49.     mostraVett(parole,num_parole);
  50. }
  51.  
  52. void contaParole(stringa nomeFile,int &num_parole)
  53. {
  54.     num_parole=0;
  55.     stringa buffer;
  56.     fstream file;
  57.     file.open(nomeFile, ios::in);
  58.     if(!file)
  59.     {
  60.         cout<<"Errore durante l'apertura del file.";
  61.         exit(1);
  62.     }
  63.     while( file >> buffer)
  64.     {
  65.         num_parole++;
  66.     }
  67.     file.close();
  68. }
  69. void leggiFile(stringa nomeFile,stringa parole[])
  70. {
  71.     stringa buffer;
  72.     int cont=0;
  73.     fstream file;
  74.     file.open(nomeFile, ios::in);
  75.     if(!file)
  76.     {
  77.         cout<<"Errore durante l'apertura del file.";
  78.         exit(1);
  79.     }
  80.     while(file>>buffer)
  81.     {
  82.         strcpy(parole[cont++],buffer);
  83.     }  
  84.     file.close();
  85. }
  86. void mostraVett(stringa parole[], int num_parole)
  87. {
  88.     for(int r=0;r<num_parole;r++)
  89.     {
  90.         cout<<parole[r]<<" ";
  91.     }
  92. }  
  93. void ordinaParolaAlf(stringa parola, int len_parola)
  94. {
  95.     for(int i=0;i<len_parola-1;i++)
  96.     {
  97.         for(int r=0;r<len_parola-1;r++)
  98.         {
  99.             if(parola[r]>parola[r+1])
  100.             {
  101.                 scambiaChar(parola,r,r+1);
  102.             }
  103.         }
  104.     }
  105. }
  106. void scambiaChar(stringa vettore,int a,int b)
  107. {
  108.     char c=vettore[a];
  109.     vettore[a]=vettore[b];
  110.     vettore[b]=c;
  111. }
  112. int flen_parola_Norep(stringa parola,int &cont)
  113. {
  114.     cont=0;
  115.     int len_parola=strlen(parola);
  116.     for(int i=0;i<len_parola;i++)
  117.     {
  118.         if(parola[i]!=parola[i+1])
  119.         {
  120.             cont++;
  121.         }
  122.     }
  123. }
  124. void Riemp_VettIndex(stringa parola,int vettoreOut[],int len_parola)
  125. {      
  126.     int cont=1;
  127.     for(int i=0;i<len_parola-1;i++)
  128.         {
  129.             if(parola[i]!=parola[i+1])
  130.             {
  131.                 vettoreOut[cont]=i+1;
  132.                 cont++;
  133.             }
  134.         }
  135. }      
  136. void fOccorrenze_Vett(stringa parola,int parola_index[],int len_parola,int lenParNorep,int vettOut[])
  137. {
  138.     for(int p=0;p<lenParNorep;p++)
  139.     {
  140.         int cont=0;
  141.         for(int i=0;i<len_parola;i++)
  142.         {
  143.             if(parola[parola_index[p]]==parola[i])
  144.             {
  145.                 cont++;
  146.             }
  147.         }
  148.         vettOut[p]=cont;
  149.     }
  150. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement