Cerca

Creazione anagrammi esistenti - 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;
}

Background Image

Header Color

:

Content Color

: