Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <fstream>
- #include <string.h>
- using namespace std;
- typedef char stringa[255];
- void contaParole(stringa nomeFile, int &num_parole);
- void leggiFile(stringa nomeFile, stringa parole[]);
- void mostraVett(stringa parole[], int num_parole);
- void scambiaChar(stringa vettore,int a,int b);
- void ordinaParolaAlf(stringa parola, int len_parola);
- int flen_parola_Norep(stringa parola,int &cont);
- void Riemp_VettIndex(stringa parola,int vettoreOut[],int len_parola);
- void fOccorrenze_Vett(stringa parola,int parola_index[],int len_parola,int lenParNorep,int vettOut[]);
- int main()
- {
- int num_parole;
- stringa *parole, fileF1;
- cout<<"Inserisci il nome del file: ";
- cin>>fileF1;
- contaParole(fileF1,num_parole);
- parole = new stringa[num_parole];
- leggiFile(fileF1,parole);
- for(int p=0;p<num_parole;p++)
- {
- stringa parola;
- strcpy(parola,parole[p]);
- int len_parola=strlen(parola);
- //Ordina alfabeticamente le parole.
- ordinaParolaAlf(parola,len_parola);
- strcpy(parole[p],parola);
- //Riempi il vettore contenente gli indici.
- int lenParNorep;
- flen_parola_Norep(parola,lenParNorep);
- int parola_index[lenParNorep];
- Riemp_VettIndex(parola,parola_index,len_parola);
- //Riempi il vettore contenente le ripetizioni.
- int Occorrenze_Vett[lenParNorep];
- fOccorrenze_Vett(parola,parola_index,len_parola,lenParNorep,Occorrenze_Vett);
- cout<<lenParNorep<<" ";
- }
- mostraVett(parole,num_parole);
- }
- void contaParole(stringa nomeFile,int &num_parole)
- {
- num_parole=0;
- stringa buffer;
- fstream file;
- file.open(nomeFile, ios::in);
- if(!file)
- {
- cout<<"Errore durante l'apertura del file.";
- exit(1);
- }
- while( file >> buffer)
- {
- num_parole++;
- }
- file.close();
- }
- void leggiFile(stringa nomeFile,stringa parole[])
- {
- stringa buffer;
- int cont=0;
- fstream file;
- file.open(nomeFile, ios::in);
- if(!file)
- {
- cout<<"Errore durante l'apertura del file.";
- exit(1);
- }
- while(file>>buffer)
- {
- strcpy(parole[cont++],buffer);
- }
- file.close();
- }
- void mostraVett(stringa parole[], int num_parole)
- {
- for(int r=0;r<num_parole;r++)
- {
- cout<<parole[r]<<" ";
- }
- }
- void ordinaParolaAlf(stringa parola, int len_parola)
- {
- for(int i=0;i<len_parola-1;i++)
- {
- for(int r=0;r<len_parola-1;r++)
- {
- if(parola[r]>parola[r+1])
- {
- scambiaChar(parola,r,r+1);
- }
- }
- }
- }
- void scambiaChar(stringa vettore,int a,int b)
- {
- char c=vettore[a];
- vettore[a]=vettore[b];
- vettore[b]=c;
- }
- int flen_parola_Norep(stringa parola,int &cont)
- {
- cont=0;
- int len_parola=strlen(parola);
- for(int i=0;i<len_parola;i++)
- {
- if(parola[i]!=parola[i+1])
- {
- cont++;
- }
- }
- }
- void Riemp_VettIndex(stringa parola,int vettoreOut[],int len_parola)
- {
- int cont=1;
- for(int i=0;i<len_parola-1;i++)
- {
- if(parola[i]!=parola[i+1])
- {
- vettoreOut[cont]=i+1;
- cont++;
- }
- }
- }
- void fOccorrenze_Vett(stringa parola,int parola_index[],int len_parola,int lenParNorep,int vettOut[])
- {
- for(int p=0;p<lenParNorep;p++)
- {
- int cont=0;
- for(int i=0;i<len_parola;i++)
- {
- if(parola[parola_index[p]]==parola[i])
- {
- cont++;
- }
- }
- vettOut[p]=cont;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement