referaty.sk – Všetko čo študent potrebuje
Klement
Sobota, 23. novembra 2024
Obojsmerná rotácia statického poľa
Dátum pridania: 20.11.2003 Oznámkuj: 12345
Autor referátu: super.feto
 
Jazyk: Slovenčina Počet slov: 1 017
Referát vhodný pre: Stredná odborná škola Počet A4: 2.7
Priemerná známka: 2.96 Rýchle čítanie: 4m 30s
Pomalé čítanie: 6m 45s
 
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.
 
   1  |  2  |  3    ďalej ďalej
 
Copyright © 1999-2019 News and Media Holding, a.s.
Všetky práva vyhradené. Publikovanie alebo šírenie obsahu je zakázané bez predchádzajúceho súhlasu.