Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Problema trovaparole
Forum - C/C++ - Problema trovaparole

Avatar
osi94 (Normal User)
Rookie


Messaggi: 45
Iscritto: 25/12/2009

Segnala al moderatore
Postato alle 19:02
Martedì, 17/05/2011
Il problema dice:

stabilire se una parola è contenuta orizzontalmente o verticalmente in una matrice alfanumerica in cui ogni elemento contiene un carattere

Io provato a farlo così, ma nada.



Codice sorgente - presumibilmente C++

  1. #include <cstdlib>
  2. #include <iostream>
  3.  
  4. using namespace std;
  5.  
  6. int main(int argc, char *argv[])
  7. {
  8.     char a[100][100];
  9.     char b[100];
  10.    int j[100][100];
  11.     int r,c,num,m,s;
  12.     string parola;
  13.     cout<<"Inserisci il numero di righe: ";
  14.     cin >> r;
  15.     cout<<"Inserisci il numero di colonne: ";
  16.     cin >> c;
  17.    
  18.     for(int i=1; i<=r; i++)
  19.     for(int k=1; k<=c; k++)
  20.     {{
  21.         cout <<"Inserisci il valore di ("<<i<<"; "<<k<<") : ";
  22.         cin >> a[i][k];
  23.         }}
  24.         cout<<"Inserisci la parola da cercare: ";
  25.         cin>> parola;
  26.        
  27.        
  28.         for ( m=0; m<parola.size(); m++)
  29.         {
  30.             b[m]= parola[m];
  31.             }
  32.    
  33.       for (int n=0; n<num; n++)
  34.       {
  35.      for(int i=0; i<r; i++)
  36.     for(int k=0; k<c; k++)
  37.     {{
  38.            
  39.            if (b[n]=a[i][k])
  40.            {
  41.              j[i][k]=1;
  42.              }
  43.              else
  44.              {
  45.                  j[i][k]=0;
  46.                                
  47.               }
  48.              
  49.               }}
  50.               }
  51.  
  52.          
  53.                  
  54.     system("PAUSE");
  55.     return EXIT_SUCCESS;
  56. }


PM Quote
Avatar
HeDo (Founder Member)
Guru^2


Messaggi: 2763
Iscritto: 21/09/2007

Segnala al moderatore
Postato alle 19:51
Martedì, 17/05/2011

cosa vuol dire "ma nada"? non funziona? da errore? crasha? non fa quello che ti serve?

un punto di partenza è semplicemente ciclare i caratteri prima riga per riga come farebbe la strcmp, poi passare alle colonne e ripetere il procedimento.
un'ottimizzazione potrebbe essere fermarsi a controllare la posizione corrente se la stringa che si sta cercando è più lunga dei caratteri rimanenti.


Ingegnere Informatico
https://ldlagency.it
PM Quote
Avatar
Ultimo (Member)
Expert


Messaggi: 513
Iscritto: 22/05/2010

Segnala al moderatore
Postato alle 19:57
Martedì, 17/05/2011

  if (b[n]=a[k])   NO
  
   if (b[n]==a[k])   OK

  =    ( Assegna un valore)

  ==  ( Confronta due valori se sono uguali) :k:


Ultimo (Hai voluto la bicicletta ? ....)

Studiare LINQ, WPF, ASP.NET MVC, Entity Framwork, C#, Blend, XAML, Javascript, HTML5, CSS .....(tanta roba)

https://www.dropbox.com/s/c2aots5x4urgbhf/setup_game_sudoku ...
PM Quote
Avatar
osi94 (Normal User)
Rookie


Messaggi: 45
Iscritto: 25/12/2009

Segnala al moderatore
Postato alle 19:58
Martedì, 17/05/2011
Non funziona.

PM Quote
Avatar
osi94 (Normal User)
Rookie


Messaggi: 45
Iscritto: 25/12/2009

Segnala al moderatore
Postato alle 19:59
Martedì, 17/05/2011
Testo quotato

Postato originariamente da Ultimo:


  if (b[n]=a[k])   NO
  
   if (b[n]==a[k])   OK

  =    ( Assegna un valore)

  ==  ( Confronta due valori se sono uguali) :k:



Ora ci provo! grazie :k:

Ci sto provando, ma sto impazzendo con gli if. Non è c'è un altro metodo senza utilizzare un sacco di if?

Ultima modifica effettuata da osi94 il 17/05/2011 alle 20:21
PM Quote
Avatar
Grappaforever (Normal User)
Newbie


Messaggi: 2
Iscritto: 17/05/2011

Segnala al moderatore
Postato alle 20:41
Martedì, 17/05/2011

:-|


Mipiacelagrappa
Se ti menano hanno ragione(Konfucio)

PM Quote
Avatar
frank87 (Normal User)
Newbie


Messaggi: 20
Iscritto: 10/03/2011

Segnala al moderatore
Postato alle 21:35
Martedì, 17/05/2011
Nel tuo codice ci sono errori!! Quando scorri i for,se vuoi scandire o assegnare a tutta la matrice,gli indici che usi li devi far partire da zero. Poi,ci sono variabili come "num" ed "n" non inizializzate,e poi una stringa è gia una sequanza di char,non c'è bisogno la assegni ad un array di char. Anche se "parola" la dichiari come string, puoi fare lo stesso if (m[j]==parola[j).
Ragionaci meglio che ce la farai di sicuro!!! ;)

Ultima modifica effettuata da frank87 il 18/05/2011 alle 0:34
PM Quote