Trovare array nella matrice

di Anonimizzato30166 il
35 risposte
Help

/* scrivere un programma che legga in input una matrice di interi e un array di interi e valuti
se l'array è contenuto nella matrice (cioè se è un sotto-array di almeno una riga della matrice)*/

#include <iostream>
using namespace std;

bool trova_array(int * v, int dim, int ** M, int righe, int colonne)
{
    if(dim>righe*colonne)
    return false;

    int cont=0;
    for(int i=0; i<=righe-dim;i++)
    for(int j=0; j<=colonne-dim;j++)
    {
        for (int r=0; r<dim;r++)
        if (v[0+r]==M[i+r][j+r])
        cont++;
        else
        break;
        if (cont==dim)
        return true;
    }
    return false;
}

int main()
{
const int size=2;
int v[]={1,5};

int righe=2;
int colonne=2;
int dim=righe*colonne;
int M[dim]={1,5,7,8};


bool trovato = trova_array(v,size,M,righe,colonne);
if (trovato)
cout << "l'array è nella matrice" << endl;
else 
cout <<"l'array non è nella matrice" << endl;


    return 0;
}
cosa sbaglio? ho provato a seguire i suggerimenti dati dal mio prof ma sbaglio sicuramente qualcosa

35 Risposte

  • Sicuro che il puntatore a matrice si dichiara con int* M?
  • Si si dichiara con due puntatori ma facendolo mi porta un errore .. stavo provando a considerare la matrice come array unidimensionale, non so
  • Non è meglio correggere l'errore e usare il doppio puntatore?
  • Ho corretto, ma non va lo stesso.
    Ho un problema con la funziona e non capisco dove sbaglio
  • Nel main() però M è un'array e non una matrice
  • oregon ha scritto:


    Non è meglio correggere l'errore e usare il doppio puntatore?
    Scusa ma come fai a passare una matrice (nel senso di array bidimensionale statico) ad una funzione attraverso un argomento di tipo puntatore doppio?
  • Ho riscritto il programma dichiarando la matrice dinamicamente ma non funziona ugualmente.. ho problemi con la funzione, il resto non centra..
  • @cavamr

    Non continuare a modificare i post che fai casino e poi gli altri si confondono. È già il secondo thread

    Fai un attimo una ricerca sui puntatori doppi nel forum stesso oppure su un libro di testo, prima di continuare
  • Ripeto: non è un problema di dichiarazione della matrice ma un problema della funzione .
  • Cava sappiamo tutti risolvere questo esercizio. Però se vuoi che qualcuno ti segua nei ragionamenti non puoi modificare i post passati, che come vedi fai un gran macello. Per il resto studia un attimo come si chiama una matrice da una funzione, ci sono diversi modi. È meglio che andare per tentativi
  • Per quello che ho studiato io (e per quello che serve per passare l'esame), una matrice ad una funzione si passa con un doppio puntatore ed è quello che ho fatto. All'inizio, considerando la matrice come un array unidimensionale, l'ho passata alla funzione con un solo puntatore ma con scarsi risultati. In questo momento la funzione mi sta dando problemi.
  • cavamr ha scritto:


    Per quello che ho studiato io (e per quello che serve per passare l'esame), una matrice ad una funzione si passa con un doppio puntatore ...
    Se con matrice intendi un array (statico) bidimensionale, ti sbagli!
  • Non so allora.. sulla dispensa che ci ha fornito il prof una matrice all'interno della funzione viene dichiarata con doppio puntatore. Durante il corso abbiamo studiato anche la gestione delle matrici tramite array unidimensionali.
    Sicuramente mi sarò spiegato anche male ma il mio corso di laurea non è di informatica quindi non ne capisco molto
  • Per questo non mi sto applicando nemmeno più di tanto e vorrei sapere cosa sbaglio nella funzione, perchè vorrei dare questo esame e poi chiudere con l'informatica ahahah
Devi accedere o registrarti per scrivere nel forum
35 risposte