Problem z macierzami w C

0

Witajcie,

dlaczego ten kod się nie kompiluje:

#include <stdio.h>



int main() {



int mac1[1000][1000];
int mac2[1000][1000];

int i, j, wym1, wym2;


print("Podaj wymiary macierzy.");
scanf("%d %d", &wym1, &wym2);


for (i=0; i<wym1; ++i) {

for (j=0; j<wym2; ++j) {

scanf("%d", &mac1[i][j]);

}
}



for (i=0; i<wym1; ++i) {

for (j=0; j<wym2; ++j) {

printf("%d ", mac1[i][j]);

}

printf("\n");
}



return 0;
}

Ma on za zadanie wczytać macierz, a następnie ją wyświetlić.

0

Ok, zamiast prinft, było print, ale jak skompiluje to mi się aplikacja wysypuje :/ Co robię źle ?

0

Program działa na Linuksie. Być może jednak przekraczasz rozmiar stosu, to zależy od systemu operacyjnego. Tak "ogromne" (jak na stos) rzeczy alokuje się na stercie (czyli jest to tzw. alokowanie dynamicznie).

Skoro nie znasz rozmiarów macierzy w czasie kompilacji powinieneś się takim rozwiązaniem zainteresować. Możesz zacząć na wikipedii.

0

Akurat odpalam na Windowsie, ale trop dobry. Dzięki.

0

Przydzielasz prawie 8MB na stosię, rozmiar tablic to 10001000sizeof(int) = 4000000 (dla 32-bit)
Możesz przy kompilacji zadeklarować stos na 8MB i zadziała.
Ale może jednak lepiej zrobić te tablicy typu static:
static int Tb[1000][1000];

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