Oppure

Loading
17/05/11 17:02
osi94
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.




#include <cstdlib>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
    char a[100][100];
    char b[100];
   int j[100][100];
    int r,c,num,m,s;
    string parola;
    cout<<"Inserisci il numero di righe: ";
    cin >> r;
    cout<<"Inserisci il numero di colonne: ";
    cin >> c;
    
    for(int i=1; i<=r; i++)
    for(int k=1; k<=c; k++)
    {{
        cout <<"Inserisci il valore di ("<<i<<"; "<<k<<") : ";
        cin >> a[i][k];
        }}
        cout<<"Inserisci la parola da cercare: ";
        cin>> parola;
        
       
        for ( m=0; m<parola.size(); m++)
        {
            b[m]= parola[m];
            }
    
      for (int n=0; n<num; n++)
      {
     for(int i=0; i<r; i++)
    for(int k=0; k<c; k++)
    {{
            
           if (b[n]=a[i][k])
           {
             j[i][k]=1;
             }
             else
             {
                 j[i][k]=0;
                               
              }
              
              }}
              }

         
                  
    system("PAUSE");
    return EXIT_SUCCESS;
}
aaa
17/05/11 17:51
HeDo

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.
aaa
17/05/11 17:57
Ultimo

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

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

= ( Assegna un valore)

== ( Confronta due valori se sono uguali) :k:
If ok Then GOTO Avanza else GOTO Inizia

17/05/11 17:58
osi94
Non funziona.
aaa
17/05/11 17:59
osi94
Postato originariamente da Ultimo:


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

if (b[n]==a[i][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 17/05/11 18:21
aaa
17/05/11 18:41
Grappaforever

:-|
aaa
17/05/11 19:35
frank87
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[i][j]==parola[j).
Ragionaci meglio che ce la farai di sicuro!!! ;)
Ultima modifica effettuata da frank87 17/05/11 22:34
aaa