Pagina 1 di 1

esercizio prendere minore da matrice, c++

MessaggioInviato: 10/09/2018, 17:37
da emilianoo
Salve a tutti,
ho il seguente esercizio:
Immagine

sono riuscito a scriverlo fino a quando mi chiede di allocare dinamicamente il minore, se esiste, in una nuova matrice. Non riesco a capire come fare a portare gli elementi del minore in una nuova matrice, qualcuno può aiutarmi?
grazie in anticipo

questo è quello che sono riuscito a scrivere, non so se è corretto.

Codice:


#include <iostream>

using namespace std;

int main() {
   int rig, col, i, j, l,m;
   
   



    for (i=0; i<=rig-k+1; i++)
      for(j=0; j<=col-k+1; j++)
      {
 
 //verificare se i minori di ordine k hanno elementi tutti maggiori di 0.
        bool trovato=false;
     int cont=0;
    do{
    for ( l=i; l<k+i; l++)
    for ( m=j; m<k+j; k++)
    {
       
        if (cont==k*k&&M[l][m]>0)
            trovato=true;
        else
        cont++;   
    }}while (cont<k*k&&!trovato );
 
   }
   
    int **M;
    M=new int* [rig];
    for(i=0;i<rig;i++)
    {
        M[i]=new int [col];
    }
    return 0;
    }

Re: esercizio prendere minore da matrice, c++

MessaggioInviato: 12/09/2018, 00:08
da apatriarca
Per farlo hai prima di tutto bisogno di memorizzarti quale minore hai trovato e non solo se l'hai trovato o meno. Dopodiché devi iterare su tutti gli elementi del minore e copiarli nella matrice allocata dinamicamente. Per il primo punto hai bisogno di memorizzarti tutti i valori necessari a identificare un singolo minore all'interno della matrice. Una volta che sei in grado di identificare tale minore non dovrebbe essere difficile copiare i suoi elementi in una matrice allocata dinamicamente (a meno che il problema non sia in qualche modo legato all'allocazione dinamica?).

Re: esercizio prendere minore da matrice, c++

MessaggioInviato: 12/09/2018, 22:21
da emilianoo
Il mio ragionamento è questo riguardo la ricerca e la memorizzazione del minore:
scorro la matrice con 2 cicli "for" per righe "i" e colonne "j", poi con altri due cicli "for", con indici diversi, scorro all'interno della matrice con una lunghezza k per righe e k per colonne(cioè faccio la ricerca del minore di ordine k), se trovo il minore memorizzo gli indici "i" e "j" da cui ho iniziato a scorrere con lunghezza k, partendo da quei due indici copio il minore contenuto nella matrice in un nuova matrice allocata dinamicamente. Se questo ragionamento è corretto, ora non so come copiarli, so come allocare una matrice dinamicamente ma non so come copiare dalla vecchia alla nuova.
Grazie per la risposta.