Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2010
    Messaggi
    10

    [C] Creazione elenco parole

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

  2. #2
    omg scritta così mi sembra estremamente pesante
    non ti conviene fare qualcosa di puramente ricorsivo?
    all that you need:
    http://www.cplusplus.com/reference/clibrary/

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2010
    Messaggi
    10
    Lo so! Ma con la ricorsione non sono capace!
    Il mio prof mi ha detto che si può fare o con la ricorsione oppure con 7 cicli for.
    Però ho provato non riesco a farlo funzionare.
    Come si farebbe con la ricorsione?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.