Cześć, próbujesz w zły sposób przekazać tablice do funkcji.
Przedstawiam Ci 3 sposoby przekazywania tablic wielowymiarowych.
Sposób 1.
W tym sposobie można stworzyć tablicę w taki sposób w jaki zrobiłeś to Ty.
#include <iostream>
using namespace std;
void wyswietl(int t[3][3])
{
for(int i=0; i<3; i++)
for(int j=0; j<3; j++)
cout << t[i][j] << " ";
}
int main()
{
int tab[3][3]={{1,2,3},{4,5,6},{7,8,9}};
wyswietl(tab);
return 0;
}
Tutaj niestety musisz znać 2 rozmiar tablicy(tyko pierwszego można nie pisać), ale da się to ominąć ;). Patrz sposób 2 i 3.
Sposób 2.
W 2 sposobie potrzebna będzie dynamiczna alokacja tablicy. Jeżeli nie wiesz jak to zrobić wstawiam link
#include <iostream>
using namespace std;
void wyzeruj(int **t)
{
for(int i=0; i<3; i++)
for(int j=0; j<3; j++)
t[i][j]=0;
}
int main()
{
int **tab = new int *[3];
for(int i=0; i<3; i++)
tab[i]=new int [3];
wyzeruj(tab);
return 0;
}
Sposób 3.
Ten sposób polega na zasymulowaniu wielowymiarowości. Wyliczasz indeksy(tak samo jak to robi kompilator) wzorem: indeks=(rozmiar1 * szerokosc_tablicy) + rozmiar2. Można tak zrobić, ponieważ tablice w pamięci operacyjnej są układane liniowo(jedna za drugą).
#include <iostream>
using namespace std;
void wyzeruj_element(int *t,int rozmiar1, int rozmiar2, int szerokosc)
{
t[rozmiar1*szerokosc+rozmiar2]=0;
}
int main()
{
int tab[3][3];
wyzeruj_element(&tab[0][0],2,1,3);
cout << tab[2][1];
return 0;
}
A tu możesz przeczytać o tym więcej:
http://www.algorytm.edu.pl/tablice-w-c/tablica-jako-argument-funkcji.html
https://forum.dobreprogramy.pl/t/c-przekazywanie-tablic-wielowymiarowych-do-funkcji/415952/2
https://www.youtube.com/watch?v=ByzWW_IiGU0
Jak czegoś nie wiesz jeszcze to pytaj.