Napisz funkcję, która dostaje jako argumenty dwuwymiarową prostokątną tablicę tablic tab1 o wymiarach n × m i elementach typu int oraz jej wymiary, i zwraca jako wartość wskaźnik do nowo utworzonej dwuwymiarowej tablicy tablic tab2 o wymiarach m × n zawierającej transponowaną macierz przechowywaną w tablicy tab1 (czyli dla dowolnych k i j zachodzi tab1[k][j] = tab2[j][k].
Wyżej jest mój problem i wymyśliłem do niego taki program. Po odpaleniu wypisuje się tylko pierwszy element tablicy poprawnie a reszta to losowe liczby, nie wiem czy dobrze zwracam wskaźnik do tablicy ani czy dobrze tworze nową i zapisuję nową tablicę którą wyświetlam w funkcji main. Nigdzie nie mogłem znaleźć rozwiązania i proszę o pomoc.
Dodam że sprawdzałem wypisywanie tej tablicy wewnątrz funkcji i działa poprawnie więc problem mam z samym zwracaniem i wyświetlaniem w mainie.
#include <iostream>
using namespace std;
int transponowanie(int **tab1, int k, int j)
{
int** tab2;
tab2 = new int* [j] {};
for (int i = 0; i < j; i++)
{
tab2[i]= new int[k] {};
}
for (int i = 0; i < k; i++)
{
for (int l = 0; l < j; l++)
{
tab2[l][i] = tab1[i][l];
}
}
return **tab2;
}
int main()
{
int n, m;
cout << "Podaj wymiary tablicy: ";
cin >> n >> m;
int** tab1;
tab1 = new int* [n];
for (int i = 0; i < n; i++)
{
tab1[i] = new int[m];
for (int j = 0; j < m; j++)
{
cin >> tab1[i][j];
}
}
int** tab2;
tab2 = new int* [m];
for (int i = 0; i < m; i++)
{
tab2[i] = new int [n];
}
**tab2 = transponowanie(tab1, n, m);
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
cout << tab2[i][j] << " ";
}
cout << "\n";
}
return 0;
}