- Dettagli
-
Categoria: Programmazione - C++
Questo programma crea anagrammi partendo da una parola inserita dall'utente. Se affiancato da una wordlist(scaricabile da qui https://www.dropbox.com/s/zb6rf9pa2weqzy5/wordlist.txt ) controlla se l'anagramma creato esiste e vicino ci scrive ok. Purtroppo non ho commentato il codice ed è un po confusionario e da migliorare.
#include<iostream>
#include<cstring>
#include<fstream>
using namespace std;
void scambia (char*, char*);
void anagramma (char* ,int ,int );
int h;
int s=0;
void scambia (char *a, char *b)
{
char t;
t = *a ;
*a=*b;
*b=t;
}
void anagramma (char *parola,int i,int len)
{
char ana[21];
string line;
int j;
if (i!=len)
{
for (j=i;j<=len;j++){
scambia(&parola[i],&parola[j]);
anagramma(parola,i+1,len);
scambia(&parola[i],&parola[j]);
}
}
else{
for (j=0;j<=len;j++){
ana[j] = parola[j];
}
h++;
cout<<h<<")"<< ana;
ifstream myfile ("wordlist.txt");
if (myfile.is_open())
{
while ( myfile.good() )
{
getline (myfile,line);
if (line == ana)
{ s++;
cout<<" <--";
break;
}
;
}
myfile.close();
cout<<"\n";
//cout<<"\n"<<"finito";
}
else cout << "Unable to open file";
}
}
int main()
{
char a;
char parola[21];
string line;
cout<<"Inserisci una parola (max 20 caratteri ‘minuscoli’): ";
cin >>parola;
if(strlen(parola)==2)
{ cout<< parola<<"\n";
a = parola[0];
parola[0] = parola[1];
parola[1] = a;
cout<<parola;}
else if(strlen(parola)==1) cout<<parola;
else{
anagramma(parola,0,strlen(parola)-1);
if (s==0) cout <<"Non esistono anagrammi di senso compiuto.";
else {cout<<"\nAnagrammi Creati--"<<h;
cout<<"\nAnagrammi con senso --"<<s;
}
}
return 0;
}