Pagina 5 di 6 primaprima ... 3 4 5 6 ultimoultimo
Visualizzazione dei risultati da 41 a 50 su 60

Discussione: [C] funzione ricorsiva

  1. #41
    Utente di HTML.it L'avatar di /dev/null
    Registrato dal
    May 2004
    Messaggi
    1,936
    codice:
    $ gcc -Wall -o palindromac palindromac.c 
    palindromac.c: In function `palindroma':
    palindromac.c:11: warning: implicit declaration of function `strlen'
    palindromac.c:11: warning: unused variable `i'
    palindromac.c:20: warning: control reaches end of non-void function
    palindromac.c: In function `main':
    palindromac.c:32: warning: control reaches end of non-void function
    $ ./palindromac 
    
    Inserisci una parola...
    ciao
    
    ciao è PALINDROMA



    @Gli_Altri: A voi vi va?


    Ultima modifica ad opera dell'utente /dev/null il 01-01-0001 alle 00:00

  2. #42
    codice:
    andr3anet@linuxbox00:~/Desktop$ gcc palindroma_ricorsiva.c -o prova -Wall
    palindroma_ricorsiva.c: In function `palindroma':
    palindroma_ricorsiva.c:11: warning: implicit declaration of function `strlen'
    palindroma_ricorsiva.c:11: warning: unused variable `i'
    palindroma_ricorsiva.c:20: warning: control reaches end of non-void function
    palindroma_ricorsiva.c: In function `main':
    palindroma_ricorsiva.c:32: warning: control reaches end of non-void function
    andr3anet@linuxbox00:~/Desktop$ ./test
    
    Inserisci una parola...
    mario
    
    mario NON è PALINDROMA
    andr3anet@linuxbox00:~/Desktop$ ./test
    
    Inserisci una parola...
    osso
    
    osso è PALINDROMA
    andr3anet@linuxbox00:~/Desktop$
    Indipendentemente che a te nn vada se la provi su "carta" vedi che la funzione che ho scritto è corretta come logica.


    ps xchè dice che la var i non è usata?
    E ancora perchè la funziona strlen è implicitamente dichiarata?cosa intende?forse anche non includendo l'header string.h automaticamente se la và a trovare? :F

    Vediamo..sogni che diventano professione...passioni che diventano vita... Free as in Freedom...

  3. #43
    Utente di HTML.it L'avatar di /dev/null
    Registrato dal
    May 2004
    Messaggi
    1,936
    Originariamente inviato da andrea_NET-_DSL
    codice:
    andr3anet@linuxbox00:~/Desktop$ gcc palindroma_ricorsiva.c -o prova -Wall
    palindroma_ricorsiva.c: In function `palindroma':
    palindroma_ricorsiva.c:11: warning: implicit declaration of function `strlen'
    palindroma_ricorsiva.c:11: warning: unused variable `i'
    palindroma_ricorsiva.c:20: warning: control reaches end of non-void function
    palindroma_ricorsiva.c: In function `main':
    palindroma_ricorsiva.c:32: warning: control reaches end of non-void function
    andr3anet@linuxbox00:~/Desktop$ ./test
    
    Inserisci una parola...
    mario
    
    mario NON è PALINDROMA
    andr3anet@linuxbox00:~/Desktop$ ./test
    
    Inserisci una parola...
    osso
    
    osso è PALINDROMA
    andr3anet@linuxbox00:~/Desktop$
    Indipendentemente che a te nn vada se la provi su "carta" vedi che la funzione che ho scritto è corretta come logica.


    ps xchè dice che la var i non è usata?
    E ancora perchè la funziona strlen è implicitamente dichiarata?cosa intende?forse anche non includendo l'header string.h automaticamente se la và a trovare? :F

    :maLOL: Ecco il problema!
    Nell'ultimo codice che hai postato c'era ancora "int i" dentro all'if...
    Ho rimosso dal codice quell'istruzione e ora va bene

    Si', dice che strlen non e' dichiarata perche' dovresti includere string.h... Il gcc pero' e' intelligente e non da errore per cose simili: e' il TD (il linker) che si occupa di dare errore se non trova quella funzione nelle librerie che fonde col programma


    Ultima modifica ad opera dell'utente /dev/null il 01-01-0001 alle 00:00

  4. #44
    @Gli_Altri: A voi vi va?
    Anche da me "ciao" è palindroma
    WinXp-->dev-C++
    Il centro dell'attenzione non è sempre un buon posto in cui trovarsi

    Mai discutere con uno stupido, la gente potrebbe non capire la differenza. (O. W.)

  5. #45
    Originariamente inviato da /dev/null
    :maLOL: Ecco il problema!
    Nell'ultimo codice che hai postato c'era ancora "int i" dentro all'if...
    Ho rimosso dal codice quell'istruzione e ora va bene

    Si', dice che strlen non e' dichiarata perche' dovresti includere string.h... Il gcc pero' e' intelligente e non da errore per cose simili: e' il TD (il linker) che si occupa di dare errore se non trova quella funzione nelle librerie che fonde col programma


    ok..la logica infatti mi pareva esatta

    PER TUTTI: Ho editato il codice postato sopra TOGLIENDO l'int i=i; ,dentro il corpo dell'if, che per errore di battitura avevo inserito

    quindi in definitiva il codice finale e funzionante è il seguente
    codice:
    /* realizzato da AnDr3a_NeT */
    #include<stdio.h>
    
    int palindroma(char *parola){
    static int i=1;
    static int j=0;
    
    //controllo che la stringa passata non sia nulla
    if(parola == NULL) return 0;
    
    //condizione di uscita della ricorsione
    if(i == strlen(parola)) { i=1; j=0; return 1;}
    
    
    if(parola[j] == parola[strlen(parola)-i] ){
    ++i;
    ++j;
    return palindroma(++parola);
    }
    
    }
    
    
    int main(){
    
    char test[50];
    printf("\nInserisci una parola...\n");
    scanf("%s",test);
    if(palindroma(test))
    printf("\n%s è PALINDROMA\n",test);
    else
    printf("\n%s NON è PALINDROMA\n",test);
    }
    Vediamo..sogni che diventano professione...passioni che diventano vita... Free as in Freedom...

  6. #46
    Utente di HTML.it L'avatar di /dev/null
    Registrato dal
    May 2004
    Messaggi
    1,936
    Originariamente inviato da unomichisiada
    Anche da me "ciao" è palindroma
    WinXp-->dev-C++
    Cambia:
    if(i == strlen(parola)) {int i=1; j=0; return 1;}
    con
    if(i == strlen(parola)) {i=1; j=0; return 1;}

    Ultima modifica ad opera dell'utente /dev/null il 01-01-0001 alle 00:00

  7. #47
    argh avete continuato un bel po' su questo codice da fixare ma io (sn sincero ) nn sn riuscito a leggere tutto tutto tutto

    però per quanto riguarda la parte "filosofica" della funzione avete detto e fatto anche praticamente quel che avevo dett io nel mio primo post qua
    ovvero che se si passa un solo parametro è indispensabile l'uso di "sotterfugi" quali una var static oppure la duplicazione della stringa in modo da avere alla fine ancora una cosa diversa dall'orginale per lavorare, quest'ultima in realtà non l'avevo pensata, ma in fondo usa davvero troppa memoria



    (fatene tanti di thread così per studiare algoritmi e bug vari )
    @_=(115,-17,6);print+map{chr$_[$.=$_-$_]*$_**$.+++$_[$.]*$_**$.+++$_[$.]*$_**$.}$.-$...$#_

  8. #48
    codice:
    Cambia: 
    if(i == strlen(parola)) {int i=1; j=0; return 1;} 
    con 
    if(i == strlen(parola)) {i=1; j=0; return 1;}
    Ho già provato e ciao è sempre palindroma a casa sua... VVoVe:
    Il centro dell'attenzione non è sempre un buon posto in cui trovarsi

    Mai discutere con uno stupido, la gente potrebbe non capire la differenza. (O. W.)

  9. #49
    Originariamente inviato da unomichisiada
    codice:
    Cambia: 
    if(i == strlen(parola)) {int i=1; j=0; return 1;} 
    con 
    if(i == strlen(parola)) {i=1; j=0; return 1;}
    Ho già provato e ciao è sempre palindroma a casa sua... VVoVe:
    impossibile ....
    leggi il MIO ULTIMO POST(escludendo questo dove sto scrivendo) dove ho rilasciato il codice finale!



    ps cancella il file,creane uno nuovo e compilalo di nuovo!
    Vediamo..sogni che diventano professione...passioni che diventano vita... Free as in Freedom...

  10. #50
    Originariamente inviato da andrea_NET-_DSL
    codice:
    /* realizzato da AnDr3a_NeT */
    #include<stdio.h>
    
    int palindroma(char *parola){
    static int i=1;
    static int j=0;
    
    //controllo che la stringa passata non sia nulla
    if(parola == NULL) return 0;
    
    //condizione di uscita della ricorsione
    if(i == strlen(parola)) { i=1; j=0; return 1;}
    
    
    if(parola[j] == parola[strlen(parola)-i] ){
    ++i;
    ++j;
    return palindroma(++parola);
    }
    
    /*
     * ma qui non ci starebbe bene un return 0?
     */
    
    }
    @_=(115,-17,6);print+map{chr$_[$.=$_-$_]*$_**$.+++$_[$.]*$_**$.+++$_[$.]*$_**$.}$.-$...$#_

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.