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; } } }}}}}}}}

Rispondi quotando