Transponowanie macierzy

0

Mam za zadanie napisać program, który transponuje macierz, ale natrafiłem na pewien problem. Program nie "zapamiętuje" zmiany wartości w macierzy, a pozostawia pierwotne.
Pewnie jest to błąd w moim rozumowaniu i braku znajomości podstaw języka c++, ale nie mogę spać przez ten prosty zapewne problem, więc proszę was o radę.

Oto kod:

#include <iostream>
#include <cstdlib>
#include <ctime>
#include <stdio.h>
#include <math.h>
#include <string.h>

using namespace std;

void transponowanie(int ** macierz,int rozmiar);

int main() {

srand(time(NULL));

//deklaracja tablicy dwuwymiarowej
int **matrix = new int *[5];
memset (matrix,0,5*sizeof(int));

for (int i=0;i<5;i++)
    matrix[i]=new int [5];

for (int i=0;i<5;i++)
{
    for (int j=0;j<5;j++)
    {
        matrix[i][j]=rand() % 8 + 1; //zapełnianie ją losowymi wartościami
        printf("%10d",matrix[i][j]); // wyświetlanie macierzy
    }
    cout<<endl<<endl;
}


cout<<endl<<endl;
for (int i=0;i<=64;i++) cout<<'-';
cout<<endl;


transponowanie(matrix,5);

for (int i=0;i<5;i++)
    delete [] matrix[i];
delete [] matrix;
system("pause");}



void transponowanie(int ** macierz,int rozmiar)
{
    int n=rozmiar;
    int pomocnicza;
    for (int i=0;i<n;i++)
    {
        for (int j=0;j<n;j++)
        {

                pomocnicza=macierz[i][j];
                macierz[i][j]=macierz[j][i];
                macierz[j][i]=pomocnicza; 
               // printf("%10d",macierz[i][j]);    tutaj wyświetla prawidłową wartość          
        }
       // cout<<endl<<endl;        
    }
    for (int i=0;i<64;i++)cout<<"-";
    cout<<endl;
     for (int i=0;i<n;i++)
    {
        for (int j=0;j<n;j++)
        {
            printf("%10d",macierz[i][j]);       //wyświetla wartości poprzednie      
        }
        cout<<endl<<endl;
    }
}
1

Transponujesz macierz 2 razy. W funkcji transponowanie zamień "for (int j=0;j<n;j++)" na "for (int j=i;j<n;j++)"

1 użytkowników online, w tym zalogowanych: 0, gości: 1