Trovare array nella matrice

di il
35 risposte

35 Risposte - Pagina 3

  • Re: Trovare array nella matrice

    @Nippolo
    grazie per i consigli!
    - non dovrebbe controllare tutte le righe della matrice fino al penultimo valore?
    - la parte racchiusa nel terzo for dovrebbe andare a verificare se l'array v è contenuto nella matrice m.
    Appena c'è corrispondenza di un valore, incremento il contatore finchè non è uguale alla dimensione dell'array. In quel caso l'array è contenuto e la funzione ritorna true. Se cont non è uguale alla dimensione ritorna false.
    Sommo j all'indice r perchè mi permette di muovermi dentro la matrice .. (sbaglio?) in una funzione di ricerca della matrice più piccola nella matrice più grande con il professore abbiamo ragionato così e ho ragionato allo stesso modo anche per questa funzione
  • Re: Trovare array nella matrice

    oregon ha scritto:


    @cavamr

    Dato che l'esercizio parla di input da tastiera e quindi non indica un numero preciso di colonne e righe, continua a gestire l'allocazione dinamica della matrice come hai fatto (evitando peraltro i VLA)

    Magari per una questione di velocità nello sviluppo puoi leggere i dati da un file se sai farlo.
    ok grazie! modifico solo la funzione che del resto è quella che mi serve ed applico i consigli per migliorare la lettura del programma
  • Re: Trovare array nella matrice

    cavamr ha scritto:


    - non dovrebbe controllare tutte le righe della matrice fino al penultimo valore?
    Esatto, tutte le righe, ma non mi pare sia quello che tu stai facendo:
    for(int r = 0; r <= rig - dim; r++)

    cavamr ha scritto:


    Sommo j all'indice r perchè mi permette di muovermi dentro la matrice .. (sbaglio?)
    Sì!

    cavamr ha scritto:


    in una funzione di ricerca della matrice più piccola nella matrice più grande con il professore abbiamo ragionato così e ho ragionato allo stesso modo anche per questa funzione
    Forse dovresti riflettere di più e affidarti di meno all'esperienza basata su altri esercizi già svolti.
    In ogni caso devi sì muoverti all'interno della matrice, ma solo lungo le colonne, quindi j va sommato solo a c e non a r.
  • Re: Trovare array nella matrice

    Ce l'ho fatta finalmente, grazie mille!! grazie perchè mi hai fatto ragionare
  • Re: Trovare array nella matrice

    bool trova_array(int *v, int dim, int m[][COL], int rig, int col)
    {
        if(dim > col)
        {
            return false;
        }
        int cont;
        for(int r = 0; r <= rig; r++) //indice righe matrice
        {
            for(int c = 0; c <= col; c++) //indice colonne matrice
            {
                cont = 0;
                for(int j = 0; j < dim; j++) //indice array
                {
                    if(v[0 + j] == m[r][c+j])
                    {
                        cont++;
                    }
                    else
                    {
                        break;
                    }
                }
                if(cont == dim)
                {
                    return true;
                }
            }
        }
        return false;
    }
    se dovesse servire a qualcuno questa è la funzione, grazie ancora
  • Re: Trovare array nella matrice

    Di niente, ma c'è ancora qualcosa che non va:
    for(int r = 0; r <= rig; r++)
    occhio alla condizione, così vai a leggere zone di memoria che non competono alla matrice!
    for(int c = 0; c <= col; c++)
    stesso discorso di sopra, in questo caso la vecchia condizione era esatta (è inutile andare a cercare l'array laddove non può entrarci).

    P.S.
    Quel
    v[0 + j]
    non si può guardare!
Devi accedere o registrarti per scrivere nel forum
35 risposte