tablice wielowymiarowe

0

Witam,
wydaje mi się, że mam spore problemy z rozumieniem jak dokładnie działa to wszystko. Przyjmijmy, że mamy tablicę wielowymiarową prostokątną, powiedzmy, że o wielkości [10] [8].
I tutaj mam pytanie. Jak odnieść się do:
-miejsc w tablicy poniżej przekątnej i samej przekątnej (jeśli chodzi o samą przekątną to pewnie wystarczy, że [x] równa się [y].

  • konkretnych wierszy i kolumn.
    Dziękuję z góry i pozdrawiam!:)
    EDIT
    Chociaż jeśli chodzi o odwołanie się do konkretnych wierszy i kolumn, to wystarczy [0] dla pierwszego wiersza.
2

[jak odnieść się do] miejsc w tablicy poniżej przekątnej i samej przekątnej

Na sam początek wypadałoby sobie zdefiniować, czym jest tak właściwie przekątna w tablicy o różnych wymiarach ;-)

[jak odnieść się do] konkretnych wierszy i kolumn.

tablica[n][m]

0

Hm.
To powiedzmy, że mam prostą tablicę kwadratową 5 na 5. Przekątna to tam, gdzie i==j. Idzie jakoś prosto zdefiniować elementy tablicy pod tą przekątną jak i nad nią? :)

3

Narysuj sobie tę tablicę na kartce, oznacz przekątną i przekonaj się sam ;-)

2

Możesz to zrobić w taki o to niecny sposób:

 
size_t tab_s = 5;
tab[ tab_s ][ tab_s ] = {0}; // ustawilismy wszystkie elementy na zero a teraz damy jedynki po przekątnej.

for( size_t i = 0; i < tab_s; i++ )  tab[i][i] = 1;


0

Wracając do tematu, udało mi się napisać program liczący przekątną i co jest pod nią, ale problem jest w tym, że liczy tylko dla tablic kwadratowych. Jeśli chodzi o prostokąty, to źle wylicza przekątną. Idzie to jakoś może w łatwy sposób poprawić, by działało na dowolnych tablicach? Myślę nad jakimś fikuśnym warunkiem, ale chwilowo mam pustą głowę, a termin się zbliża.

    int main() {
int tab[5][5];
int lib = 1;
int suma = 0;
int x = 1;

for (int i = 0; i < 5; i++) {
	for (int j = 0; j < 5; j++){
		tab[i][j] = lib;
		lib++;
	}
}
for (int i = 0; i < 5; i++) {
	for (int j = 0; j < 5; j++) {
		printf("%2d%s", tab[i][j], " ");
	}
	printf("\n");
}
for (int i = 0; i <5;i++){
	for (int j = 0; j < x; j++) {
		suma = suma + tab[i][j];


	}
	if (x != 5) {
		x++;
	}

	
}
printf("%d\n",suma);
return 0;

}

 
3

zdefiniuj jak ma wyglądać przekątna w prostokątnej tablicy.

tak?
0 0 0 x
0 0 x 0
0 0 x 0
0 x 0 0
0 x 0 0
x 0 0 0
x 0 0 0

czy tak ?

0 0 0 x
0 0 0 x
0 0 x 0
0 0 x 0
0 x 0 0
0 x 0 0
x 0 0 0

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