spaces (Normal User)
Newbie
Messaggi: 15
Iscritto: 10/05/2013
|
Ciao a tutti!
Devo sviluppare un algoritmo che, prendendo in input un testo(stringa) e una parola, ricerchi la parola nel testo e ne stampi la posizione.
Sia il testo che la parola ho pensato di prenderli in input con una gets, in quanto il testo contiene anche spazi.
Il mio problema fondamentalmente è trovare la parola nel testo poichè non posso usare la strcmp ma dovrei ricercare la parola lettera per lettera. Come posso fare affinchè vengano comparate le singole lettere della parola all'interno del testo per trovare se e quante volte la parola è presente?
Grazie mille
Ultima modifica effettuata da spaces il 13/05/2013 alle 18:57 |
|
LittleHacker (Member)
Guru
Messaggi: 1033
Iscritto: 28/04/2009
|
Postato originariamente da spaces:
Ciao a tutti!
Devo sviluppare un algoritmo che, prendendo in input un testo(stringa) e una parola, ricerchi la parola nel testo e ne stampi la posizione.
Sia il testo che la parola ho pensato di prenderli in input con una gets, in quanto il testo contiene anche spazi.
Il mio problema fondamentalmente è trovare la parola nel testo poichè non posso usare la strcmp ma dovrei ricercare la parola lettera per lettera. Come posso fare affinchè vengano comparate le singole lettere della parola all'interno del testo per trovare se e quante volte la parola è presente?
Grazie mille |
Prova:
Codice sorgente - presumibilmente C/C++ |
string s, a;
for (int i=0; i < strlen(s); i++)
{
if (s[i] == a[i])
{
// Questo codice viene eseguito quando la lettera nella stringa "s" all posizione "i", è uguale a quella della "a"
}
}
|
Fammi sapere |
|
spaces (Normal User)
Newbie
Messaggi: 15
Iscritto: 10/05/2013
|
Il tuo codice confronta una sola lettera o erro?
Se io ho una striga di 100 caratteri e una parola di 4-10 caratteri io devo trovare tutta la parola nella stringa.
Nel tuo caso s[100] e a[10].
|
|
lillogoal (Member)
Rookie
Messaggi: 28
Iscritto: 26/04/2013
|
In c non esistono le stringhe, in c++ si! per fare le "stringhe" in c: devi dichiarare char nomestr[dimensione];
per inserire i dati nella variabile: puoi utilizzare la funzione gets o un semplice for
|
|
tasx (Dev Team)
Expert
Messaggi: 439
Iscritto: 15/12/2008
|
|
|
LittleHacker (Member)
Guru
Messaggi: 1033
Iscritto: 28/04/2009
|
Postato originariamente da lillogoal:
In c non esistono le stringhe, in c++ si! per fare le "stringhe" in c: devi dichiarare char nomestr[dimensione];
per inserire i dati nella variabile: puoi utilizzare la funzione gets o un semplice for |
Non c'è solo quel metodo...si può anche usare un puntatore ad un char! Così: char *stringa;!
Comunque sono uguali!
spaces: Così è un po' complicata...la risposta di tasx è giustissima Ultima modifica effettuata da LittleHacker il 11/05/2013 alle 19:53 |
|
tasx (Dev Team)
Expert
Messaggi: 439
Iscritto: 15/12/2008
|
Postato originariamente da LittleHacker:
Postato originariamente da lillogoal:
In c non esistono le stringhe, in c++ si! per fare le "stringhe" in c: devi dichiarare char nomestr[dimensione];
per inserire i dati nella variabile: puoi utilizzare la funzione gets o un semplice for |
Non c'è solo quel metodo...si può anche usare un puntatore ad un char! Così: char *stringa;!
Comunque sono uguali!
spaces: Così è un po' complicata...la risposta di tasx è giustissima |
|
|
ale.gatti96 (Member)
Pro
Messaggi: 71
Iscritto: 29/11/2011
|
Ciao,
Ho dovuto fare lo stesso esercizio a scuola leggendo il testo da un file, però la parte della ricerca è simile:
Codice sorgente - presumibilmente C/C++ |
int j=0,t=0,lp; //j=contatore, t=parola trovata o no, lp=lunghezza parola da trovare
char p[20], c; //p=parola da trovare, c=carattere per metterci dentro il carattere che sto controllando
[...] //Apertura del file e immissione dati dall'utente (non te li metto perché magari ti confondono)
for(lp=0; p[lp]!='\0'; lp++); //Trovo la lunghezza della parola
while((c=fgetc(fp))!=EOF && !t){ //con "c=fgetc(fp)" leggo il carattere successivo finché non finisce il file o ho trovato la parola
if(c==p[j])
j++;
else{
j=0;
if(c==p[0])
j++;
}
if(j==lp-1)
t=1;
}
if(t)
printf("\nParola trovata\n");
else
printf("\nParola NON trovata\n");
|
|
|
spaces (Normal User)
Newbie
Messaggi: 15
Iscritto: 10/05/2013
|
Avevo provato anch'io la tua soluzione ma mi dava il seguente errore:
invalid conversion from `char*' to `char'
nella riga:
Codice sorgente - presumibilmente Plain Text |
Il testo l'ho dichiarato come testo[10][10] ovvero 10 stringhe da 10 caratteri massimi per cui non mi fa inserire all'interno di C le lettere. Se invece pongo testo semplicemente come testo[100] ho un problema sulla gets per prenderlo in input in quanto non mi dà la possibilità di scrivere la stringa durante l'esecuzione del programma.
Ultima modifica effettuata da spaces il 12/05/2013 alle 9:27 |
|