Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    [C++] trasposizione matrice a blocchi 2x2

    In un esercizio mi viene richiesto di trasporre una matrice rispetto alla sua diagonale principale in blocchi da 2x2. Ho pensato in primis di creare una matrice di appoggio in modo da copiare solo i blocchi che mi servono. Qui c' è il problema perchè non riesco a capire perchè la sottomatrice non
    viene copiata correttamente...grazie in anticipo
    codice:
    #include <iostream>
    using namespace std;
    void leggimatrice(int dim,int *mat);
    void stampa(int dim,int *mat);
    void trasposta(int dim,int *mat);
    int main()
    {
        int dim;
        do
        {
            cout<<"inserisci dimensione della matrice quadrata ";
            cin>>dim;
        }    while(dim<=0 || dim%2!=0 );
        int mat[dim][dim];
        leggimatrice(dim,&mat[0][0]);
        stampa(dim,&mat[0][0]);
        trasposta(dim,&mat[0][0]);
    }
    void leggimatrice(int dim,int *mat)
    {
        for(int i=0;i<dim;i++)
        {
            for(int j=0;j<dim;j++)
            {
                    cout<<"inserisci elemento ["<<i+1<<"]["<<j+1<<"] ";
                    cin>>*(mat+i*dim+j);
            }
        }
    }
    void stampa(int dim,int *mat)
    {
            for(int i=0;i<dim;i++)
        {
            for(int j=0;j<dim;j++)
            {
                    cout<<*(mat+i*dim+j)<<" ";
            }
            cout<<endl;
        }
    }
    void trasposta(int dim,int *mat)
    {
        int k=0,l=0;
        int mat2[2][2];
            for(int i=0;i<2;i++)
        {
            for(int j=0;j<2;j++)
            {
                    mat2[i][j]=0;
            }
        }
        for(int i=0;i<dim-3;i++)
        {
            
            for(int j=2;j<dim-1;j++)
            {
                
                mat2[k][l]=*(mat+i*dim+j);
                l++;    
            }
            k++;
            l=0;
        }
    }

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Ci dici come hai impostato le due for per la copia della sottomatrice?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    ho considerato come esempio una matrice 4x4 in modo tale che i due for mi dovrebbero settare la sottomatrice in alto a destra

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Ma il programma è generico ... se l'utente imposta 100 per dim (matrice 100x100) cosa succede?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Si in effetti se ne cade in questo modo l' idea. va bene grazie

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.