//funkcja wypelniajaca tablice dwuwymiarową zerami
void zeruj(int tab[][101],int n, int m)
{
for (int i=0;i<=n;i++)
{
for(int j=0;j<=m;j++)
{
tab[i][j]=0;
}
}
}
W C++ indeksy tablicy są liczone od zera, więc – zakładając, że n
oraz m
to rozmiary tablicy – jeśli liczysz zmienne i
oraz j
od zera, to i<=n
oraz j<=m
powinieneś zamienić na i<n
oraz j<m
. W przeciwnym razie podczas działania program będzie chcieć wejść do elementów tab[n][...]
oraz tab[...][m]
, co spowoduje błąd (wyjście poza zakres tablicy, bo każda tablica największy rozmiar indeksu ma rozmiar - 1
, a nie rozmiar
).
UPDATE: Druga sprawa – podanie argumentu m
do tej funkcji (nie pamiętam, czy to liczba kolumn, czy wierszy w C++) mija się z celem, skoro podajesz już go jako stałą, tzn. 101
(swoją drogą – nie znam się aż tak na C++, ale wydaje mi się to niezbyt ciekawym rozwiązaniem, żeby podawać rozmiar tablicy do funkcji jako stałą).
UPDATE 2: Zmień to, co napisałem w pierwszym akapicie, i powinno działać.
Czemu określasz rozmiar drugiego wymiaru tablicy?
#include <iostream>
using namespace std;
int main() {
int tab[7][8] = {0};
for (int i = 0; i < 7; i ++) {
for (int j = 0; j < 8; j ++) {
cout << tab[i][j];
}
}
return 0;
}
Wypełnienie tablicy zerami najłatwiej uzyskać przy deklaracji: https://ideone.com/9jWPw3
Chodzi mi o napisanie kawałka kodu który uruchomi tą funkcję.
int main() {
int tab[202][101];
zeruj(tab, 202); // przy założeniu, że przekazujesz jedynie parametr n
return 0;
}
W celu dodatkowego wyświetlenia tablicy możesz skorzystać z tych pętli, które napisał wyżej @Spine.