Oppure

Loading
11/05/13 13:29
spaces
Ciao a tutti! :k:
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 13/05/13 16:57
aaa
11/05/13 16:19
LittleHacker
Postato originariamente da spaces:

Ciao a tutti! :k:
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:
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 :k:
aaa
11/05/13 17:27
spaces
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].
aaa
11/05/13 17:30
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
aaa
11/05/13 17:51
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 :D
Ultima modifica effettuata da LittleHacker 11/05/13 17:53
aaa
11/05/13 18:01
tasx
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 :D


ehm... LittleHacker, la mia risposta è ciò che ha detto spaces :_doubt::_doubt::_doubt:

(pubs.opengroup.org/onlinepubs/009695399/functions/…)
aaa
11/05/13 18:12
ale.gatti96
Ciao,
Ho dovuto fare lo stesso esercizio a scuola leggendo il testo da un file, però la parte della ricerca è simile:

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]!='Ciao,

Ho dovuto fare lo stesso esercizio a scuola leggendo il testo da un file, però la parte della ricerca è simile:

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]!='{parsed_message}'; 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");
'; 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");
aaa