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;
}
}