Ricerca in un array

gaetano010
Salve ragazzi,
qualcuno cortesemente può dirmi come implementare un programma in c che,data una stringa,chiedi all'utente una parola e verifica se tale parola si trova nella stringa (senza usare la funzione di libreria string.h) ?
grazie

Risposte
ludovica.sarandrea
"gaetano0":
Salve ragazzi,
qualcuno cortesemente può dirmi come implementare un programma in c che,data una stringa,chiedi all'utente una parola e verifica se tale parola si trova nella stringa (senza usare la funzione di libreria string.h) ?
grazie

Potresti scrivere una funzione che in un ciclo while che termina al termine della parola lunga confronta la prima lettera della parola con la prima di quella che deve essere contenuta, se sono uguali incrementa un contatore di uno. Fai quindi dentro il ciclo un "if... else". Se il contatore è uguale alla lunghezza della parola da contenere ti fermi, altrimenti vai avanti. Se le lettere successive sono uguali incrementi di nuovo il contatore altrimenti lo azzeri e continui.
Può essere un po' complicato da spiegare ma non mi viene in mente altro

xneo1
Chiamiamo 'a' la stringa che deve contenere, e 'b' la stringa che bisogna verificare che sia contenuta in 'a'.

I) Controlla che la stringa 'b' abbia lunghezza minore della stringa 'a'; se così non fosse allora 'b' NON può essere contenuta in 'a'.
II) Controlla che la stringa 'b' sia vuota; in tal caso allora 'b' E' sicuramente contenuta in 'a'.

A questo punto può partire l'algoritmo di ricerca
Setta un contatore 'count' a 0;
Scorri la stringa 'a' e ad ogni iterazione 'i' controlla se il carattere 'a' sia uguale a 'b[count]'; Se non sono uguali, riporta il contatore a 0 (nel caso fosse diverso da 0), e controlla che il carattere 'a' sia uguale a 'b[0]';
Se sono uguali incrementa il contatore e controlla che questi sia uguale alla lunghezza della stringa 'b'. In questo caso 'b' è contenuta in 'a'.
Se in nessuna iterazione sei riuscito a verificare che 'count==len(b)' allora 'b' NON è contenuta in 'a'.

PS: Non è necessario, come ti ha suggerito da @ludovica_97, iterare per tutta la lunghezza di 'a'. Se l'indice di iterazione 'i' diventa maggiore di 'len(a)-len(b)+count+1' stai sicuro che 'b' non è contenuta in 'a'.
Cioè ti devi fermare quando la lunghezza della stringa 'b' diventa maggiore del numero dei caratteri della stringa 'a' ancora da controllare.

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.