Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - [risolto]stringhe
Forum - C/C++ - [risolto]stringhe

Pagine: [ 1 2 3 ] Precedente | Prossimo
Avatar
spaces (Normal User)
Newbie


Messaggi: 15
Iscritto: 10/05/2013

Segnala al moderatore
Postato alle 15:29
Sabato, 11/05/2013
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 il 13/05/2013 alle 18:57
PM Quote
Avatar
LittleHacker (Member)
Guru


Messaggi: 1033
Iscritto: 28/04/2009

Segnala al moderatore
Postato alle 18:19
Sabato, 11/05/2013
Testo quotato

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:
Codice sorgente - presumibilmente C/C++

  1. string s, a;
  2. for (int i=0; i < strlen(s); i++)
  3. {
  4.        if (s[i] == a[i])
  5.        {
  6.            // Questo codice viene eseguito quando la lettera nella stringa "s" all posizione "i", è uguale a quella della "a"
  7.        }
  8. }



Fammi sapere :k:

PM Quote
Avatar
spaces (Normal User)
Newbie


Messaggi: 15
Iscritto: 10/05/2013

Segnala al moderatore
Postato alle 19:27
Sabato, 11/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].

PM Quote
Avatar
lillogoal (Member)
Rookie


Messaggi: 28
Iscritto: 26/04/2013

Segnala al moderatore
Postato alle 19:30
Sabato, 11/05/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

PM Quote
Avatar
tasx (Dev Team)
Expert


Messaggi: 439
Iscritto: 15/12/2008

Segnala al moderatore
Postato alle 19:48
Sabato, 11/05/2013

PM Quote
Avatar
LittleHacker (Member)
Guru


Messaggi: 1033
Iscritto: 28/04/2009

Segnala al moderatore
Postato alle 19:51
Sabato, 11/05/2013
Testo quotato

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 il 11/05/2013 alle 19:53
PM Quote
Avatar
tasx (Dev Team)
Expert


Messaggi: 439
Iscritto: 15/12/2008

Segnala al moderatore
Postato alle 20:01
Sabato, 11/05/2013
Testo quotato

Postato originariamente da LittleHacker:

Testo quotato

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:

(http://pubs.opengroup.org/onlinepubs/009695399/functions/s ...

PM Quote
Avatar
ale.gatti96 (Member)
Pro


Messaggi: 71
Iscritto: 29/11/2011

Segnala al moderatore
Postato alle 20:12
Sabato, 11/05/2013
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++

  1. int j=0,t=0,lp;  //j=contatore,    t=parola trovata o no,      lp=lunghezza parola da trovare
  2. char p[20], c;   //p=parola da trovare,     c=carattere per metterci dentro il carattere che sto controllando
  3.  
  4. [...]  //Apertura del file e immissione dati dall'utente (non te li metto perché magari ti confondono)
  5.  
  6. for(lp=0; p[lp]!='\0'; lp++); //Trovo la lunghezza della parola
  7.  
  8. while((c=fgetc(fp))!=EOF && !t){  //con "c=fgetc(fp)" leggo il carattere successivo finché non finisce il file o ho trovato la parola
  9.   if(c==p[j])
  10.     j++;
  11.   else{
  12.     j=0;
  13.     if(c==p[0])
  14.       j++;
  15.   }
  16.   if(j==lp-1)
  17.     t=1;
  18. }
  19.        
  20. if(t)
  21.   printf("\nParola trovata\n");
  22. else
  23.   printf("\nParola NON trovata\n");


PM Quote
Avatar
spaces (Normal User)
Newbie


Messaggi: 15
Iscritto: 10/05/2013

Segnala al moderatore
Postato alle 9:27
Domenica, 12/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

  1. c=testo[i];


  
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
PM Quote
Pagine: [ 1 2 3 ] Precedente | Prossimo