Zadajte prvky matice m x n. Napíšte program, ktorý pre zadané celé číslo k Î (-n; n):
a) Zrotujte maticu o k prvkov (pre kladné k posunie posuňie prvky v každom riadku doprava o k stĺpcov, pre záporné doľava, pre k = 0 zostanú prvky na mieste), pričom pri posunuti posledného prvku doprava o jedno bude tento prvok presunutý na prvú pozíciu toho istého riadku (analogicky pri posunutí prvého prvku doľava...).
c) Zmení všetky prvky pôvodnej matice deliteľné zadaným číslom k na 0 (vynuluje ich).
Špecifikácia
VSTUP:
- vstupné premenné: k, m, n, A[MAX][MAX]
- vstupná podmienka: 1 < m < MAX
1 < n < MAX
-n < k < n
VÝSTUP:
- výstupné premenné: A[MAX][MAX], B[MAX][MAX], C[MAX][MAX]
- výstupné podmienky: B:
a/ doprava: ak (k + j) < n
B[i][j + k] = A[i][j]
Inak
B[i][(j + k) - n] = A[i][j]
b/ k = 0: B[i][j] = A[i][j]
c/ doľava: ak (k + j) >= 0
B[i][j + k] = A[i][j]
Inak
B[i][k + j + n] = A[i][j]
C:
a/ k!= 0: ak A[i][j] % k) == 0
C[i][j] = 0
Inak
C[i][j] = A[i][j]
b/ k = 0: maticu C nevypíše
Analýza
Vo svojej podstate je tento program veľmi zaujímavý, teda aspoň pre mňa. Je pomerne jednoduché načítať jednotlivé premenné a taktiež aj prvky matice, kde som použil funkciu, preto sa k tomu nejdem viac vracať. Pri samotnom výpočte výstupnej matice som sa riadil pomerne jednoduchým matematickým analyzovaním a porovnávaním zadaného čísla k a počtom stĺpcov matice. V prvom rade som testoval číslo k voči 0. Ak je k väčšie ako 0, tak som musel použiť ďalší rozhodovací blok a to testovanie súčtu čísel k a j (j aktuálna pozícia stĺpca matice). Tento súčet by mal byť menší ako celkový počet stĺpcov matice. Potom som jednoducho začal priraďovať prvky matice A prvkom matice B, ale s tým, že ku aktuálnemu stĺpcu matice B som prirátal ešte aj hodnotu čísla k (napr.: j + k => 1 + 2). Ak bol súčet k + j väčší alebo rovný ako počet stĺpcov matice, tak každému prvku matice B priradil prvok matice A ale s tým rozdielom, že k aktuálnemu stĺpcu matice B pripočítal hodnotu k a od tohto súčtu ešte odpočítal celkový počet stĺpcov matice A. Toto bol posun doprava.
Ak hodnota čísla k je 0 tak každému prvku matice B bude priradený prvok matice A presne na tú istú pozíciu.
Zaujímavosti o referátoch
Ďaľšie referáty z kategórie