Esercizio prendere minore da matrice, c++
Salve a tutti,
ho il seguente esercizio:

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.
ho il seguente esercizio:

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.
#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; }
Risposte
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?).
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.
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.