Devo creare un elenco di parole nel seguente modo:
Inserendo una stringa di 7 numeri (possono essere da 2 a 9):
ogni numero corrisponde a 3 o 4 lettere (come sui cellulari).
2: a,b,c
3: d,e,f
ecc...
Devo generare tutte le parole possibili.
Come si fa?
questo è il mio pezzo di codice, ma fatto cosi ma non funziona:
codice:
char **p;
char str[N]="2459867"; //stringa da decodificare
int due,tre,quattro,cinque,sei,sette,otto,nove;
int q,i,j,k;
q=pow(2,7);
//ALLOCO IL VETTORE DI STRINGHE
p=(char**)malloc(sizeof(char*)*q);
for(i=0;i<q;i++){
p[i]=(char*)malloc(sizeof(char)*N);
}
//CREO TUTTE LE POSSIBILI PAROLE
for(i=0;i<q;i++){printf("\n");
for(due=0;due<3;due++){
for(tre=0;tre<3;tre++){
for(quattro=0;quattro<3;quattro++){
for(cinque=0;cinque<3;cinque++){
for(sei=0;sei<3;sei++){
for(sette=0;sette<4;sette++){
for(otto=0;otto<3;otto++){
for(nove=0;nove<4;nove++){
for(j=0;j<N;j++){
switch(str[j]){
case '2':if(due==0)p[i][j]='a';if(due==1)p[i][j]='b';if(due==2)p[i][j]='c';printf("%c",p[i][j]);break;
case '3':if(tre==0)p[i][j]='d';if(tre==1)p[i][j]='e';if(tre==2)p[i][j]='f';printf("%c",p[i][j]);break;
case '4':if(quattro==0)p[i][j]='g';if(quattro==1)p[i][j]='h';if(quattro==2)p[i][j]='i';printf("%c",p[i][j]);break;
case '5':if(cinque==0)p[i][j]='j';if(cinque==1)p[i][j]='k';if(cinque==2)p[i][j]='l';printf("%c",p[i][j]);break;
case '6':if(sei==0)p[i][j]='m';if(sei==1)p[i][j]='n';if(sei==2)p[i][j]='o';printf("%c",p[i][j]);break;
case '7':if(sette==0)p[i][j]='p';if(sette==1)p[i][j]='q';if(sette==2)p[i][j]='r';if(sette==3)p[i][j]='s';printf("%c",p[i][j]);break;
case '8':if(otto==0)p[i][j]='t';if(otto==1)p[i][j]='u';if(otto==2)p[i][j]='v';printf("%c",p[i][j]);break;
case '9':if(nove==0)p[i][j]='w';if(nove==1)p[i][j]='x';if(nove==2)p[i][j]='y';if(nove==2)p[i][j]='z';printf("%c",p[i][j]);break;
}
}
}}}}}}}}