Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2007
    Messaggi
    1

    [C] verificare se una stringa è sottostringa di un'altra

    Ciao a tutti!!
    sto scrivendo una funzione ricorsiva in C che date 2 stringhe verifica se la seconda è inclusa nella prima.
    ho abbozzato qualcosa ma non funziona ancora , qualcuno puo' darmi qualche dritta?
    grazie infinite

  2. #2
    posta un po di codice di quello che hai fatto e vediamo cosa si puo fare. . .
    Se una funzione riceve come argomento un puntatore di puntatore di puntatore quando la invochi ricordati che puo ricevere o un puntatore di puntatore di puntatore o l'indirizzo di un puntatore di puntatore

  3. #3
    Mi sto imbattendo anche io in questo problema...
    Ho provato a risolverlo ma non so se sia giusto, ecco il mio codice:

    int sottostringa (char *s1, char *s2){

    int i=0;
    int j=0;

    if (s2[j]=='\0') return 0;
    if (s1[i]=='\0') return 1;

    else if (s1[i] != s2[j]) return sottostringa(&s1[0],&s2[j+1]);
    else return sottostringa (&s1[i+1],&s2[j+1]);

    return 0;
    }

  4. #4
    cosi è sbajato...perche esempio nel caso di stringhe sovrapposte ti dara sempre 0...usa una funzione ausiliara...

  5. #5
    non basterebbe invertire i 2 if?

  6. #6
    a parte qst che è un'osservazione giusta...se fai &s[0] nn torna indietro...ma rimane sempre nella stessa posizione...perche l'indirizzo parte da quella chimata ricorsiva..

  7. #7
    quando l'ho testato sembrava giusto...quale potrebbe essere un metodo per tenermi l'indirizzo al primo elemento originario mantenendo sempre lo stesso prototipo?

  8. #8
    usa lo stesso prototipo per la funzione...ma nella funzione chiami un'altra funzione dove gli passi altri due puntatori alle teste delle due stringhe..praticamente solo la seconda funzione è ricorsiva...co la prima inneschi la ricorsione..

  9. #9
    ci ho provato ma nn mi riesce...non è ke mi potresti scrivere una parte del codice della sottoprocedura?

  10. #10
    se vuoi ti scrivo tutto il programma...


    iint sottostringa(char *s1,char *s2){

    if(*s1=='\0')
    return 1;
    if(*s2=='\0')
    return 0;
    return sottostringaAus(s1,s2,s1,s2);

    }
    int sottostringaAus(char *str1,char *str2,char *testa1,char *testa2){

    if(*str1!='\0' && *str2!='\0'){
    if(*str1==*str2)
    return sottostringaAus(str1+1,str2+1,testa1,testa2);
    else return sottostringaAus(testa1,testa2+1,testa1,testa2+1);
    }
    if(*str1=='\0') return 1;
    else return 0;
    }

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.