esercizio prendere minore da matrice, c++

Messaggioda emilianoo » 10/09/2018, 17:37

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;
    }
emilianoo
Starting Member
Starting Member
 
Messaggio: 22 di 23
Iscritto il: 04/01/2018, 18:43

Re: esercizio prendere minore da matrice, c++

Messaggioda apatriarca » 12/09/2018, 00:08

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?).
apatriarca
Moderatore
Moderatore
 
Messaggio: 5115 di 5153
Iscritto il: 08/12/2008, 20:37
Località: Londra

Re: esercizio prendere minore da matrice, c++

Messaggioda emilianoo » 12/09/2018, 22:21

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.
emilianoo
Starting Member
Starting Member
 
Messaggio: 23 di 23
Iscritto il: 04/01/2018, 18:43


Torna a Informatica

Chi c’è in linea

Visitano il forum: Nessuno e 2 ospiti