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 - Pagina 3

Pagine: [ 1 2 3 ] Precedente | Prossimo
Avatar
ale.gatti96 (Member)
Pro


Messaggi: 71
Iscritto: 29/11/2011

Segnala al moderatore
Postato alle 15:43
Lunedì, 13/05/2013
Quando passi un array passi il puntatore al suo primo elemento e poi la funzione opera direttamente sul vettore originale e non su una copia, quindi non deve ritornare nessun valore --> void
Scrivi la funzione così:
Codice sorgente - presumibilmente C/C++

  1. void input(char testo[100]){
  2.    fgets(testo,100,stdin);
  3. }


PM Quote
Avatar
spaces (Normal User)
Newbie


Messaggi: 15
Iscritto: 10/05/2013

Segnala al moderatore
Postato alle 16:16
Lunedì, 13/05/2013
Già provato non cambia di una virgola.. non capisco dove sia il problema.

PM Quote
Avatar
ale.gatti96 (Member)
Pro


Messaggi: 71
Iscritto: 29/11/2011

Segnala al moderatore
Postato alle 16:57
Lunedì, 13/05/2013
Allora il problema è nel resto del sorgente. Posta tutte le 150 righe

PM Quote
Avatar
spaces (Normal User)
Newbie


Messaggi: 15
Iscritto: 10/05/2013

Segnala al moderatore
Postato alle 17:03
Lunedì, 13/05/2013
Non è nel resto del codice poichè se al posto della gets inserisco una scanf funziona perfettamente. Ho però bisogno di poter inserire nel testo anche spazi quindi la scanf non fa al caso mio.

PM Quote
Avatar
ale.gatti96 (Member)
Pro


Messaggi: 71
Iscritto: 29/11/2011

Segnala al moderatore
Postato alle 17:08
Lunedì, 13/05/2013
Ma quella funzione è corretta, se eseguo questo codice funziona alla perfezione:
Codice sorgente - presumibilmente C++

  1. void input(char testo[100]){
  2.    fgets(testo,100,stdin);
  3. }
  4.  
  5. int main(){
  6.   char testo[100];
  7.   input(testo);
  8.   printf("%s",testo);
  9.   getch();
  10.   return 0;
  11. }


Quindi posta tutto, altrimenti non so come aiutarti.

PM Quote
Avatar
spaces (Normal User)
Newbie


Messaggi: 15
Iscritto: 10/05/2013

Segnala al moderatore
Postato alle 17:18
Lunedì, 13/05/2013
L'ho miracolosamente sistemato senza toccare la funzione bo!
Comunque ho basato la mia ricerca sul tuo modello ma dice in ogni caso che la parola non è stata trovata.
Codice sorgente - presumibilmente C++

  1. void ricerca(char testo[100], char p[10]){   //Funzione per la ricerca della parola nel testo
  2.      int i;  //Indice
  3.      int j;  //Indice
  4.      int lp;
  5.      char a;
  6.      int t;
  7. for(lp=0; p[lp]!='\0'; lp++)
  8.                      for(i=0; i<lp && !t; i++){
  9.                               a=testo[i];
  10.   if(a==p[j])
  11.     j++;
  12.   else{
  13.     j=0;
  14.     if(a==p[0])
  15.       j++;
  16.   }
  17.   if(j==lp-1)
  18.     t=1;
  19. }    
  20. if(t==1)
  21.   printf("\nParola trovata\n");
  22. else
  23.   printf("\nParola NON trovata\n");
  24.                    }


PM Quote
Avatar
ale.gatti96 (Member)
Pro


Messaggi: 71
Iscritto: 29/11/2011

Segnala al moderatore
Postato alle 18:14
Lunedì, 13/05/2013
C'era un bug nel codice che ti ho scritto prima: è "if(j==lp)" e non "if(j==lp-1)" perché altrimenti anche se non c'è l'ultima lettera dice che trova la parola lo stesso.

Comunque così funziona:
Codice sorgente - presumibilmente C++

  1. void ricerca(char testo[100], char p[10]){
  2.   int i, j=0, lp, t=0;
  3.   char a;
  4.   for(lp=0; p[lp]!='\0'; lp++);
  5.         for(i=0; (a=testo[i])!='\0' && !t; i++){
  6.     if(a==p[j])
  7.       j++;
  8.     else{
  9.       j=0;
  10.       if(a==p[0])
  11.         j++;
  12.     }
  13.     if(j==lp)
  14.       t=1;
  15.   }
  16.   if(t==1)
  17.     printf("\nParola trovata\n");
  18.   else
  19.     printf("\nParola NON trovata\n");
  20. }


PM Quote
Avatar
spaces (Normal User)
Newbie


Messaggi: 15
Iscritto: 10/05/2013

Segnala al moderatore
Postato alle 18:48
Lunedì, 13/05/2013
Grazie :k:

PM Quote
Pagine: [ 1 2 3 ] Precedente | Prossimo