Príklady riešenia úloh s dvojrozmernými poľami, úlohy na samostatné riešenie. Dané dvojrozmerné pole reálnych čísel Dané dvojrozmerné pole

Dané dvojrozmerné pole 5x5. Usporiadajte zadávanie prvkov, výstup výsledku vo forme okien. Po pauze zmeňte farbu okien, v ktorých sú uložené prvky špecifikované podľa stavu.

Možnosti úlohy:

1.

2.

3.

4.

5.

6.

7.

8.

9.

10.

11. Nájdite súčin prvkov, ktoré sú nad hlavnou uhlopriečkou. Nahraďte všetky nepárne prvky nájdeným číslom.

12. Nájdite súčet prvkov, ktoré sú na nepárnych pozíciách (súčet indexov (i + j) pre Х ij je nepárne číslo). Nahraďte všetky negatívne prvky nájdeným číslom.

13. Nájdite súčin všetkých prvkov, ktoré sú na hlavnej diagonále. Nahraďte všetky prvky piateho riadku a druhého stĺpca nájdeným číslom.

14. Nájdite aritmetický priemer prvkov na hlavnej diagonále a aritmetický priemer na vedľajšej diagonále. Vymeňte prvky na uhlopriečkach.

15. Nájdite aritmetický priemer kladných prvkov, ktoré sú nad hlavnou diagonálou. Nahraďte všetky negatívne prvky nájdeným číslom.

16. Nájdite súčet nepárnych prvkov. Nahraďte nájdeným číslom všetky prvky, ktoré sú nad sekundárnou uhlopriečkou.

17. Nájdite súčin prvkov i-riadku a j-stĺpca (i, j- predbežné zadanie z klávesnice). Nahraďte nájdeným číslom všetky prvky pod sekundárnou uhlopriečkou.

18. Nájdite súčin prvkov, ktoré sú na párnych pozíciách (súčet indexov (i + j) pre Х ij je nepárne číslo). Nahraďte všetky prvky na hlavnej diagonále nájdeným číslom.

19. Nájdite aritmetický priemer nepárnych prvkov. Nahraďte všetky prvky bočnej uhlopriečky nájdeným číslom.

20. Nájdite súčet všetkých párnych prvkov, ktoré sú nad sekundárnou uhlopriečkou. Nahraďte všetky prvky štvrtého riadku nájdeným číslom.

21. Nájdite súčin prvkov, ktoré sú nad hlavnou uhlopriečkou. Nahraďte všetky nepárne prvky nájdeným číslom.

22. Nájdite súčet prvkov, ktoré sú na nepárnych pozíciách (súčet indexov (i + j) pre Х ij je nepárne číslo). Nahraďte všetky negatívne prvky nájdeným číslom.

23. Nájdite súčin všetkých prvkov, ktoré sú na hlavnej diagonále. Nahraďte všetky prvky piateho riadku a druhého stĺpca nájdeným číslom.

24. Nájdite aritmetický priemer prvkov na hlavnej diagonále a aritmetický priemer na vedľajšej diagonále. Vymeňte prvky na uhlopriečkach.

25. Nájdite aritmetický priemer kladných prvkov, ktoré sú nad hlavnou diagonálou. Nahraďte všetky negatívne prvky nájdeným číslom.

Napríklad: Nájdite aritmetický priemer prvkov na hlavnej diagonále

Po prestávke:

testovacie otázky

1. Čo je textový režim a ako sa líši od bežného režimu?

2. Čo je to okno?

3. Ako presunúť kurzor na zadané súradnice okna?

4. Ako zmeniť farbu písma/pozadia?

Úvod

Moderné technické zariadenia, určené na riadenie a automatizáciu, široko používané binárne obvody a binárny systém zúčtovanie. Teória logickej algebry sa používa na analýzu a syntézu kombinačných a sekvenčných spínacích obvodov.

Prednáškový materiál je prezentovaný v troch kapitolách. V prvej kapitole sú uvedené základné pojmy z teórie algebry logiky, uvažuje sa o rôznych formách reprezentácie booleovských funkcií. Druhá kapitola je venovaná problematike minimalizácie reprezentácií booleovských funkcií, čo je základom abstraktnej syntézy diskrétnych zariadení. Tretia kapitola obsahuje informácie o tom, ako implementovať booleovské funkcie založené na spínacích obvodoch, čo je základom pre štrukturálnu syntézu diskrétnych zariadení.

Pri písaní poznámok z prednášok bola použitá nasledujúca literatúra: pre časť 1.1 -; pre časť 1.2 - ; pre časť 1.3 - ; pre časť 2.1 - ; pre časť 2.2 - ; pre časti 3.1, 3.2 - .

Ďalšia porcia počítačových úloh pre školákov prišla včas. Tentokrát sa pozrime na prácu s dvojrozmernými poľami v C++. Tieto úlohy sú celkom zaujímavé. A väčšina z nich sa mi páčila.

Úloha č.1

Nájdite indexy prvého výskytu maximálneho prvku.
Formát vstupných údajov
Program dostane ako vstup veľkosti poľa n a m, potom n riadkov s číslami m. n a m nepresahujú 100.
Výstupný formát
Vytlačte dve čísla: číslo riadku a číslo stĺpca obsahujúceho najväčší prvok v dvojrozmerné pole. Ak existuje niekoľko takýchto prvkov, zobrazí sa ten s nižším číslom riadku a ak sú čísla riadkov rovnaké, potom ten s nižším číslom stĺpca.

vzorový vstup: 3 4 0 3 2 4 2 3 5 5 5 1 2 3 vzorový výstup: 1 2

#include pomocou menného priestoru std; int main() ( int n, m; cin >> n >> m; int a; // čítanie pre (int i = 0; i< n; i++) { for (int j = 0; j < m; j++) { cin >> a[i][j]; ) ) int max = a, max_i = 0, max_j = 0; pre (int i = 0; i< n; i++) { for (int j = 0; j < m; j++) { if (a[i][j] >max) ( max = a[i][j]; max_i = i; max_j = j; ) ) ) cout<< max_i << " " << max_j; return 0; }

Úloha č. 2

Je dané nepárne číslo n, nie väčšie ako 15. Vytvorte dvojrozmerné pole n×n prvkov a vyplňte ho znakom "." (každý prvok poľa je reťazec jedného znaku). Potom vyplňte znakmi "*" stredný riadok poľa, stredný stĺpec poľa, hlavnú uhlopriečku a vedľajšiu uhlopriečku. Výsledkom je, že "*" v poli by mal tvoriť obrázok s hviezdičkou. Zobrazte výsledné pole na obrazovke, pričom prvky poľa oddeľte medzerami.

vzorový vstup: 5 vzorový výstup: * . * . * . * * * . * * * * * . * * * . * . * . *

#include pomocou menného priestoru std; int main() ( int n; cin >>< n; i++) { for (int j = 0; j < n; j++) { if (i == j || i == n - 1 - j || i == n / 2 || j == n / 2) a[i][j] = 1; else a[i][j] = 0; } } for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { if (a[i][j] == 0) cout << "." << " "; else cout << "*" << " "; } cout << endl; } return 0; }

Úloha č. 3

Dané číslo n nie väčšie ako 100. Vytvorte pole n×n a vyplňte ho podľa nasledujúceho pravidla. Na hlavnej uhlopriečke by mali byť napísané čísla 0. Na dvoch uhlopriečkach susediacich s hlavnou sú čísla 1. Na ďalších dvoch uhlopriečkach čísla 2 atď.

vzorový vstup: 5 vzorový výstup: 0 1 2 3 4 1 0 1 2 3 2 1 0 1 2 3 2 1 0 1 4 3 2 1 0

#include #include pomocou menného priestoru std; int main() ( int n; cin >> n; int a; // spracovanie pre (int i = 0; i< n; i++) { for (int j = 0; j < n; j++) { a[i][j] = (int) abs(i - j); } } for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { cout << a[i][j] << " "; } cout << endl; } return 0; }

Úloha č. 4

Dané dvojrozmerné pole a dve čísla: i a j. Vymeňte stĺpce s číslami i a j v poli.
Formát vstupných údajov
Program dostane ako vstup veľkosti poľa n a m, nepresahujúce 100, potom prvky poľa, potom čísla i a j.
Výstupný formát
Vypíšte výsledok.

vzorový vstup: 0 1 vzorový výstup: 12 11 13 14 22 21 23 24 32 31 33 34

#include #include pomocou menného priestoru std; int main() ( int n, m, x, y, teplota; cin >> n >>< n; i++) { for (int j = 0; j < m; j++) { cin >> a[i][j]; ) cin >> x >> y; // spracovanie pre (int i = 0; i< n; i++) { temp = a[i][x]; a[i][x] = a[i][y]; a[i][y] = temp; } // вывод for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { cout << a[i][j] << " "; } cout << endl; } return 0; }

Úloha č. 5

Dostanete číslo n nepresahujúce 10 a pole veľkosti n × n. Skontrolujte, či je toto pole symetrické okolo hlavnej uhlopriečky. Ak je pole symetrické, vytlačte slovo „ÁNO“ a inak vytlačte slovo „NIE“.

vzorový vstup: 3 0 1 2 1 2 3 2 3 4 vzorový výstup:ÁNO

#include #include pomocou menného priestoru std; int main() ( int n; bool symetrický; cin >> n; int a; // vyplnenie (int i = 0; i< n; i++) { for (int j = 0; j < n; j++) { cin >> a[i][j]; ) ) // spracovanie symmetric = true; pre (int i = 0; i< n; i++) { for (int j = 0; j < n; j++) { if (a[i][j] != a[j][i]) symmetric = false; } } // вывод if (symmetric) cout << "YES"; else cout << "NO"; return 0; }

Úloha č. 6

Je dané štvorcové dvojrozmerné pole s veľkosťou n × n a číslom k. Vytlačte prvky k-tej uhlopriečky pod hlavnou uhlopriečkou (t. j. ak k = 1, potom musíte prvky prvej uhlopriečky vytlačiť pod hlavnú, ak k = 2, potom druhú uhlopriečku atď.).
Hodnota k môže byť záporná, napríklad ak k = −1, potom musíte vytlačiť hodnotu prvej uhlopriečky ležiacej nad hlavnou. Ak k = 0, musíte vytlačiť prvky hlavnej uhlopriečky.
Program berie ako vstup číslo n nepresahujúce 10, potom pole n × n a potom číslo k.

Vzorový vstup 1: 4 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 1 Ukážkový výstup 1: 5 1 6 Vzorový vstup 2: 4 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 -2 Ukážkový výstup 2: 3 8

#include pomocou menného priestoru std; int main() ( int n, k; cin >> n; int a[n][n]; // vyplnenie (int i = 0; i< n; i++) { for (int j = 0; j < n; j++) { cin >> a[i][j]; ) cin >> k; // spracovanie a výstup pre (int i = 0; i< n; i++) { for (int j = 0; j < n; j++) { if (i - j - k == 0) cout << a[i][j] << " "; } } return 0; }

Úloha č.7

Dané dvojrozmerné pole s veľkosťou n × m (n a m nepresahujú 1 000). Pole, ktoré je k nej symetrické vzhľadom na hlavnú uhlopriečku, sa nazýva transponované na danú. Má rozmery m×n: riadky pôvodného poľa sa stanú stĺpcami transponovaného poľa, stĺpce pôvodného poľa sa stanú riadkami transponovaného poľa.
Pre dané pole zostrojte transponované pole a zobrazte ho na obrazovke.

vzorový vstup: 3 4 11 12 13 14 21 22 23 24 31 32 33 34 vzorový výstup: 11 21 31 12 22 32 13 23 33 14 24 34

#include pomocou menného priestoru std; int main() ( int n, m, x, y, teplota; cin >> n >>< n; i++) { for (int j = 0; j < m; j++) { cin >> < n; i++) { for (int j = 0; j < m; j++) { b[j][i] = a[i][j]; } } // вывод for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { cout << b[i][j] << " "; } cout << endl; } return 0; }

Úloha č. 8

Kino má n radov, každý má m sedadiel (n a m nepresahujú 20). V dvojrozmernom poli sú uložené informácie o predaných lístkoch, číslo 1 znamená, že lístok na toto miesto je už predaný, číslo 0 znamená, že miesto je voľné. Bola prijatá požiadavka na predaj k lístkov na susedné sedadlá v rovnakom rade. Zistite, či je možné takúto požiadavku splniť.
Formát vstupných údajov
Program dostane ako vstup čísla n a m. Potom existuje n riadkov obsahujúcich m čísel (0 alebo 1) oddelených medzerami. Potom je dané číslo k.
Výstupný formát
Program by mal vypísať číslo riadku, ktorý má k po sebe idúcich prázdnych miest. Ak existuje niekoľko takýchto riadkov, vytlačte číslo najmenšieho vhodného riadku. Ak neexistuje vhodný riadok, vytlačte číslo 0.

vzorový vstup: 3 4 0 1 0 1 1 0 0 1 1 1 1 1 2 vzorový výstup: 2

#include pomocou menného priestoru std; int main() ( int n, m, k, r = 0; cin >> n >> m; int a[n][m]; // vyplnenie (int i = 0; i< n; i++) { for (int j = 0; j < m; j++) { cin >> a[i][j]; ) cin >> k; // spracovanie pre (int i = 0; i< n; i++) { int near_free = 0; for (int j = 0; j < m; j++) { if (a[i][j] == 0) { near_free++; if (near_free == k) { r = i + 1; break; } } else near_free = 0; } if (near_free == k) break; } // вывод cout << r; return 0; }

Úloha č. 9

Dané obdĺžnikové pole s veľkosťou n × m. Otočte ho o 90 stupňov v smere hodinových ručičiek a zapíšte výsledok do nového poľa m×n.
Formát vstupných údajov
Zadajú sa dve čísla n a m, ktoré nepresahujú 100, potom pole veľkosti n × m.
Výstupný formát
Výstup výsledného poľa. Čísla oddeľte jednou medzerou.

vzorový vstup: 3 4 11 12 13 14 21 22 23 24 31 32 33 34 vzorový výstup: 31 21 11 32 22 12 33 23 13 34 24 14

#include pomocou menného priestoru std; int main() ( int n, m; cin >> n >> m; int a[n][m]; int b[m][n]; // vyplnenie (int i = 0; i< n; i++) { for (int j = 0; j < m; j++) { cin >> a[i][j]; ) ) // spracovanie pre (int i = 0; i< n; i++) { for (int j = 0; j < m; j++) { b[j] = a[i][j]; } } // вывод for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { cout << b[i][j] << " "; } cout << endl; } return 0; }

Úloha č.10

Vzhľadom na čísla n a m vyplňte dvojrozmerné pole veľkosti n × m číslami od 1 do n × m pomocou „hada“, ako je znázornené v príklade.
Formát vstupných údajov
Zadávajú sa dve čísla n a m, z ktorých každé nepresahuje 20.
Výstupný formát

vzorový vstup: 3 5 vzorový výstup: 1 2 3 4 5 10 9 8 7 6 11 12 13 14 15

#include pomocou menného priestoru std; int main() ( int n, m, c = 0; cin >> n >> m; int a[n][m]; // spracovanie pre (int i = 0; i< n; i++) { for (int j = 0; j < m; j++) { c++; if (i%2 == 0) a[i][j] = c; else a[i] = c; } } // вывод for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { if (a[i][j] % 10 == a[i][j]) cout << " "; else if (a[i][j] % 100 == a[i][j]) cout << " "; else if (a[i][j] % 1000 == a[i][j]) cout << " "; cout << a[i][j]; } cout << endl; } return 0; }

Úloha č. 11

Vzhľadom na čísla n a m vyplňte dvojrozmerné pole n × m číslami od 1 do n × m "uhlopriečok", ako je znázornené v príklade.
Formát vstupných údajov

Výstupný formát
Vypíšte výsledné pole, pričom pre každý prvok ponechajte presne 4 znaky.

vzorový vstup: 3 5 vzorový výstup: 1 2 4 7 10 3 5 8 11 13 6 9 12 14 15

#include pomocou menného priestoru std; int main() ( int n, m, poz = 0, riadok = 0; cin >> n >> m; int a[n][m]; // spracovanie int počiatočný_riadok = 0; int číslo = 1; pre ( int min_riadok = 0; min_riadok< n; min_row++) { if (min_row >0) začiatočný_riadok = poz. - 1; else zaciatocny_riadok = 0; pre (poz = počiatočný_riadok; poz< m; pos++) { row = min_row; for (int col = pos; col >= 0; col--) (ak (riadok< n) { a = number; number++; row++; } else break; } } } // вывод for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { if (a[i][j] % 10 == a[i][j]) cout << " "; else if (a[i][j] % 100 == a[i][j]) cout << " "; else if (a[i][j] % 1000 == a[i][j]) cout << " "; cout << a[i][j]; } cout << endl; } return 0; }

Úloha č. 12

Uvedené sú čísla n a m. Vyplňte pole n × m v šachovnicovom vzore: bunky jednej farby sú vyplnené nulami a bunky druhej farby sú vyplnené prirodzenými číslami zhora nadol, zľava doprava. Číslo 1 je napísané v ľavom hornom rohu.
Formát vstupných údajov
Zadávajú sa dve čísla n a m, ktoré nepresahujú 100.
Výstupný formát
Vypíšte výsledné pole, pričom pre každý prvok ponechajte presne 4 znaky.

vzorový vstup: 3 5 vzorový výstup: 1 0 2 0 3 0 4 0 5 0 6 0 7 0 8

#include pomocou menného priestoru std; int main() ( int n, m, sm; cin >> n >> m; int a[n][m]; // spracovanie int číslo = 1; for (int i = 0; i< n; i++) { for (int j = 0; j < m; j++) { a[i][j] = 0; } } for (int i = 0; i < n; i++) { if (i % 2 == 1) sm = 1; else sm = 0; for (int j = sm; j < m; j++) { a[i][j] = number; number++; j++; } } for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { if (a[i][j] % 10 == a[i][j]) cout << " "; else if (a[i][j] % 100 == a[i][j]) cout << " "; else if (a[i][j] % 1000 == a[i][j]) cout << " "; cout << a[i][j]; } cout << endl; } return 0; }

Úloha č. 13

Vzhľadom na čísla n a m vyplňte dvojrozmerné pole veľkosti n × m číslami od 1 do n × m v špirále, ktorá začína od ľavého horného rohu a otáča sa v smere hodinových ručičiek, ako je znázornené v príklade.
Formát vstupných údajov
Zadávajú sa dve čísla n a m, ktoré nepresahujú 100.
Výstupný formát
Vypíšte výsledné pole, pričom pre každý prvok ponechajte presne 4 znaky.

vzorový vstup: 4 5 vzorový výstup: 1 2 3 4 5 14 15 16 17 6 13 20 19 18 7 12 11 10 9 8

#include pomocou menného priestoru std; int main() ( int n, m; cin >> n >> m; int a; for (int i = 0; i<= n + 1; i++) { for (int j = 0; j <= m + 1; j++) { a[i][j] = -1; } } for (int i = 1; i <= n; i++) { for (int j = 1; j <= m; j++) { a[i][j] = 0; } } int num = 0, row = 1, col = 0; while (num < n * m) { while (a == 0) { col++; num++; a = num; } while (a == 0) { row++; num++; a = num; } while (a == 0) { col--; num++; a = num; } while (a == 0) { row--; num++; a = num; } } for (int i = 1; i <= n; i++) { for (int j = 1; j <= m; j++) { if (a[i][j] % 10 == a[i][j]) cout << " "; else if (a[i][j] % 100 == a[i][j]) cout << " "; else if (a[i][j] % 1000 == a[i][j]) cout << " "; cout << a[i][j]; } cout << endl; } return 0; }

0 0

Ak chcete zobraziť, povoľte JavaScript

Laboratórna práca pre školy a univerzity na riešenie úloh spracovania dvojrozmerných polí v C (C). Zoznam úloh laboratórnej práce (kliknutím na odkaz prejdete na riešenie problému, ak existuje):

Ďalšie úlohy:

Všetky programy boli testované v CodeBlocks 16.01 (MinGW, Windows 10). Svoje riešenia nevyriešených programov a návrhy na zlepšenie existujúcich môžete uviesť v komentároch v spodnej časti stránky.

Stiahnite si laboratórny súbor a všetky zdrojové kódy programov v archíve:


Môžete si tiež objednať riešenia pre vaše laboratóriá v C++ a mnohých ďalších:

#1: Dané dvojrozmerné pole. Nájdite minimálny súčet prvkov reťazca. Vyriešte problém bez použitia dodatočného jednorozmerného poľa.

#include #include #include int main() ( int *arr; int x, y, i, j, súčet = 0, min = 0, minstr = 0; srand(čas(NULL)); x = 2 + rand() % 10; y = 2 + rand() % 6; arr = (int*)malloc(x*y*veľkosť(int)); printf("Pole %d x %d: \n", x, y); for (i = 0; i

#2: Určte súradnice prvku najbližšie k priemernej hodnote všetkých prvkov poľa.

#include #include #include #include int main() ( int *arr; int x, y, i, j, minx = 0, miny = 0; float ssum = 0; srand(time(NULL)); x = 1 + rand() % 10; y = 1 + rand() % 7; arr = (int*)malloc(x*y*veľkosť(int)); printf("Pole %d x %d: \n", x, y); for (i = 0 i

#9: Dané dvojrozmerné pole s párnym počtom stĺpcov. Vymeňte stĺpce ľavej polovice poľa so stĺpcami pravej polovice.

#include #include #include int main() ( int *arr; int x, y, i, j, d; srand(čas(NULL)); x = 1 + rand() % 10; y = 2 * (1 + rand() % 3 ); arr = (int*)malloc(x*y*sizeof(int)); printf("Pole %d x %d: \n", x, y); for (i = 0; i

#14: Pre každý riadok dvojrozmerného poľa zistite počet prvkov, ktorých posledná číslica sa rovná a.

#include #include #include int main() ( int *arr; int x, y, i, j, a, počet; srand(čas(NULL)); printf("Zadajte a: "); scanf("%d", &a); x = 1 + rand() % 10; y = 1 + rand() % 7; arr = (int*)malloc(x*y*sizeof(int)); printf("Pole %d x %d: \n", x, y); pre (i = 0; i

#21: Dané dvojrozmerné pole b. Berúc to ako maticu, transponujte b.

#include #include #include int main() ( int *arr, *arrT, x, y, i, j; srand(čas(NULL)); x = 1 + rand() % 7; y = 1 + rand() % 7; arr = (int*)malloc(x*y*sizeof(int)); printf("Matrica %d x %d: \n", x, y); for (i = 0; i

č. 1 (doplnkové): Je dané dvojrozmerné pole. Zoraďte jeho reťazce v neklesajúcom poradí podľa ich prvých prvkov.

#include #include #include int main() ( int *arr, x, y, i, j, k, d, max = 0; srand(čas(NULL)); x = 1 + rand() % 10; y = 1 + rand() % 7; arr = (int*)malloc(x*y*sizeof(int)); printf("Pole %d x %d: \n", x, y); for (i = 0; i *(arr + max*y)) max = j, pre (k = 0; k

#2 (Doplnkové): Určite, či je daná štvorcová matica ortonormálna, t.j. taký, v ktorom je skalárny súčin každej dvojice odlišných strún 0 a skalárny súčin každej struny so sebou samým je 1.

#include #include int main() ( int *arr; int x, i, j, k, súčet = 0; printf("Zadajte veľkosť štvorcovej matice: "); scanf("%d", &x); arr = (int *)malloc(x*x*sizeof(int)); printf("Zadajte prvky matice %d x %d: \n", x, x); for (i = 0; i

Č. 3 (doplnkové): Je dané štvorcové dvojrozmerné pole. Nájdite súčet prvkov každej z jej uhlopriečok rovnobežných s vedľajšou.

#include #include #include int main() ( int *arr; int x, y, i, j, súčet; srand(čas(NULL)); x = 2 + rand() % 6; arr = (int*)malloc(x*y* sizeof(int)); printf("Pole %d x %d: \n", x, x); for (i = 0; i

Problémy na dvojrozmerných poliach

1) Je dané dvojrozmerné pole celých čísel. Zostavte si program:

a) zobrazenie prvku umiestneného v pravom hornom rohu poľa;

b) zobrazenie prvku umiestneného v ľavom dolnom rohu poľa;

c) zobrazenie akéhokoľvek prvku druhého riadku poľa na obrazovke;

d) zobrazenie ľubovoľného prvku tretieho stĺpca poľa;

e) zobrazenie ľubovoľného prvku poľa na obrazovke.

2) Je dané dvojrozmerné celočíselné pole. Výmena:

a) prvky umiestnené v pravom hornom a ľavom dolnom rohu;

b) prvky umiestnené v pravom dolnom a ľavom hornom rohu;

3) Známe je číslo riadku, na ktorom sa nachádza prvok hlavnej uhlopriečky dvojrozmerného poľa celých čísel. Zobrazte hodnotu tohto prvku.

4) Displej (v jednom riadku):

a) všetky prvky hlavnej uhlopriečky poľa

b) všetky prvky hlavnej uhlopriečky poľa, počnúc prvkom umiestneným v pravom dolnom rohu.

5) Nahraďte hodnoty všetkých prvkov hlavnej uhlopriečky celočíselného poľa nulou.

6) Nahraďte hodnoty všetkých prvkov sekundárnej uhlopriečky celočíselného poľa hodnotami rovnými 100.

7) Určite:

a) súčet prvkov hlavnej uhlopriečky poľa;

b) súčet prvkov sekundárnej uhlopriečky poľa;

c) aritmetický priemer prvkov hlavnej uhlopriečky poľa;

d) aritmetický priemer prvkov sekundárnej uhlopriečky poľa;

e) minimálny (maximálny) prvok hlavnej uhlopriečky poľa;

f) maximálny (minimálny) prvok sekundárnej uhlopriečky reálneho poľa;

g) súradnice prvého maximálneho prvku hlavnej diagonály;

h) súradnice prvého minimálneho prvku hlavnej diagonály.

a) zobraziť všetky prvky piateho riadku poľa;

b) zobraziť všetky prvky tretieho riadku poľa, počnúc posledným prvkom tohto riadku;

c) zobrazenie všetkých prvkov s-tého stĺpca poľa;

d) nahraďte hodnoty všetkých prvkov druhého riadku poľa číslom 5;

e) nahraďte hodnoty všetkých prvkov piateho stĺpca číslom 10.

f) určiť maximálny (minimálny) prvok tretieho stĺpca;

9) Je dané dvojrozmerné pole celých čísel. Zostavte si program:

a) výpočet súčinu akýchkoľvek dvoch prvkov ľubovoľného reťazca poľa

b) súčet všetkých prvkov ľubovoľného reťazca poľa;

10) Je dané dvojrozmerné pole celých čísel. Definuj:

a) a) v ktorom stĺpci poľa je súčet prvkov menší, v prvom alebo v poslednom;

b) b) v ktorom riadku je súčin prvkov väčší, v druhom alebo v treťom.

11) Dané dvojrozmerné celočíselné pole veľkosti 10 x 10. Zobrazte časť poľa na obrazovke:

a) umiestnené nad hlavnou uhlopriečkou;



b) umiestnené pod hlavnou uhlopriečkou;

c) umiestnené nad sekundárnou uhlopriečkou;

d) umiestnené pod sekundárnou uhlopriečkou;

12) Dané dvojrozmerné pole celých čísel:

a) v každom z jeho stĺpcov nájdite maximálny (minimálny) prvok;

b) súradnice maximálneho (minimálneho) prvku;

c) súčet nepárnych prvkov v každom stĺpci (riadku);

d) počet prvkov, ktoré sú násobkami A alebo B.

e) nájdite riadok s maximálnym súčtom prvkov;

f) nájdite stĺpec s minimálnym súčtom prvkov.

  • vzdelávacie: prispieť k vytvoreniu myšlienky dvojrozmerného poľa a základných vlastností štvorcových matíc; zvážiť akcie, ktoré možno vykonať na matriciach; predstaviť typické algoritmy na spracovanie matíc v jazyku Pascal; vytvárať podmienky pre formovanie schopnosti riešiť algoritmy s dvojrozmernými poľami;
  • vyvíja:
  • vytvárať podmienky na rozvoj zručností pracovať na obmedzený čas, rozvoj samostatnej pracovnej zručnosti, rozvoj zručností pri práci s poznámkami.
  • vzdelávacie:
  • podporovať vytváranie psychickej pohody pre prácu na vyučovacej hodine, výchovu k vyrovnanosti, zodpovednému prístupu k práci a zvyšovanie motivácie k vzdelávacím aktivitám.

Typ lekcie: kombinovaná.

Vyučovacie metódy: prednáška, samostatná práca.

Formy organizácie: frontálna práca, individuálna práca.

Vybavenie: úlohy na triednu prácu (samostatné kartičky, zadanie na počítači), poznámky na tabuli.

Počas tried:

1. Organizačný moment.

pozdravujem.
Predmet bol nahlásený.
Stanovte si účel hodiny a úlohy.

2. Aktualizácia získaných poznatkov

Hlavné body predchádzajúcej témy sú ústne povedané: „Jednorozmerné polia“. Predný mini prieskum o hlavných definíciách.

3. Stanovenie cieľa, stanovenie úlohy:

  • definovať koncept dvojrozmerného poľa;
  • zvážte zápis dvojrozmerného poľa
  • zvážiť základné vlastnosti štvorcových matíc;
  • zvážiť akcie, ktoré možno vykonať na matriciach;
  • zoznámiť sa s typickými algoritmami na spracovanie matíc v jazyku Pascal;
  • vytvárať podmienky pre formovanie schopnosti riešiť algoritmy s dvojrozmernými poľami;
  • 4. Prednáška

    Definícia.

    Dvojrozmerné pole je súbor údajov, ktorých každá hodnota závisí od dvoch čísel, ktoré možno považovať za index stĺpca v matici.

    Formát záznamu

    <имя>: pole[n_index_1..to_index_1, n_index_2 ..to_index_2] z <тип>

    A: pole celých čísel;

    Ak chcete použiť prvok poľa, musíte zadať názov poľa a index prvku. Prvý index zodpovedá číslu riadku, druhý číslu stĺpca. Napríklad:

    pre i:=1 až n do
    pre j:=1 až n do
    a:=random(100);

    Pri inicializácii dvojrozmerných polí je každý riadok uzavretý v ďalšom páre zátvoriek:

    const a:mas= ((2,3,1,0),
    (1,9,1,3),
    (3,5,7,0));

    Analógom Pascalových polí v matematike sú matice. Matica, v ktorej sa počet riadkov rovná počtu stĺpcov, sa nazýva štvorcová matica. A(n,n) – štvorcová matica

    Hlavné vlastnosti štvorcových matíc:

    1. Štvorcové matice majú hlavnú a bočnú uhlopriečku. Napríklad pre maticu A prvky 1,5 a 9 ležia na hlavnej diagonále a prvky 3, 5 a 7 ležia na bočnej uhlopriečke.

    i=j – prvky sú umiestnené na hlavnej diagonále;
    i> j - prvky sú umiestnené pod hlavnou diagonálou;
    i i?j - prvky sú umiestnené na hlavnej diagonále a pod;
    i+j= n+1– prvkov sa nachádza na sekundárnej diagonále;
    i+j< n+1– элементы расположены над побочной диагональю;
    i+j> n+1 – prvky sú umiestnené pod sekundárnou diagonálou;

    2. Štvorcová matica, v ktorej sú všetky prvky okrem prvkov hlavnej uhlopriečky rovné nule, sa nazýva tzv. diagonálna matica

    3. Volá sa diagonálna matica, v ktorej sú všetky prvky na hlavnej uhlopriečke rovné 1 matica identity

    4. Ak v matici A (m, n) sú riadky a stĺpce zamenené, potom dostaneme maticu A t (m, n), ktorá sa nazýva transponovaná matica.

    Základné úkony, ktoré je možné vykonávať na matriciach

    • zhrnúť;
    • nájsť rozdiel
    • súčin matice nejakým číslom;
    • súčin dvoch matríc.

    Typické algoritmy spracovania matice v Pascale

    1. Výstup matice vo forme tabuľky:
    2. pre i:= 1 až n do
      začať
      pre j:= 1 až m do
      písať(a:4);
      písaťln
      koniec;

    3. Použitie generátora náhodných čísel:
    4. randomizovať;
      for i:=1 to m do
      začať
      pre j:=1 až n do
      začať
      a:=random(100)-10;
      písať(a:4);
      koniec;
      writeln;
      koniec;

    5. 2. spôsob zobrazenia matice vo forme tabuľky:
    6. pre i:= 1 až n do
      pre j:= 1 až m do
      ak j>m, napíšte (a:4)
      else writeln(a:4);

    7. Súčet matice:
    8. pre i:= 1 až n do
      začať
      pre j:= 1 až m do
      c:=a+b
      koniec;

    9. Transpozícia matice je zrkadlovým obrazom jej prvkov vzhľadom na hlavnú uhlopriečku. Môžete to urobiť zavedením nového poľa:

    pre i:= 1 až n do
    pre j:= 1 až n do
    b=a;

    5. Primárna kontrola

    „Vrstevnicová mapa“ 2 možnosti

    1 možnosť

    1. Opravte nepresnosti v popise dvojrozmerného poľa:
    2. Var
      A= pole celého čísla;

      ... ... dvojrozmerné polia, každý riadok je uzavretý v ďalšom páre zátvoriek:

      const a:mas= ((2,3,1,0),
      (1,9,1,3),
      (3,5,7,0));

    3. Vložte chýbajúce definície:
    4. Základné operácie, ktoré možno vykonávať s maticami: súčet, súčin dvoch matíc,….,….

    5. Vložte chýbajúce definície:
    6. Matica, v ktorej sa počet riadkov rovná počtu stĺpcov, sa nazýva .... …..

    7. Nájdite chyby v algoritme:

    pre i:= 1 až n do
    začať
    pre j:= 1 až m do
    c:=a+a
    koniec;

    Možnosť 2

    1. Opravte nepresnosti v popise poľa:

    konšt
    n = 4; m=3;
    typu
    mas:pole integer;

    1. Vložte chýbajúce definície:
    2. …… je množina údajov, z ktorých každá hodnota závisí od dvoch čísel, ktoré možno považovať za index stĺpca v matici.

    3. Vložte chýbajúce definície:
    4. Diagonálna matica, v ktorej sú všetky prvky na hlavnej uhlopriečke rovné ..., sa nazýva matica identity

    5. Vložte chýbajúce definície:
    6. Volá sa štvorcová matica, v ktorej sa všetky prvky okrem prvkov hlavnej uhlopriečky rovnajú nule … … .

    7. Nájdite chyby v algoritme:

    randomizovať;
    for i:=1 to m do
    začať
    pre j:=1 až n do
    začať
    a:=random(100)-10;
    koniec;
    koniec;

    Aká je typická úloha algoritmu?

    Algoritmy v Pascale

    1. Napíšte program, ktorý pre celočíselnú maticu 3x4 určí aritmetický priemer jej prvkov a počet kladných prvkov v každom riadku. Príloha 2
    2. program medium_n;
      const m=3;
      n = 4;
      var

      i,j,n_pos_el:integer;
      sred:real;
      začať
      for i:=1 to m do
      for j:=1 to n do read(a);
      stred:=0;
      pre i:=1 až m začínajú
      n_pos_el:=0;
      pre j:=1 až n sa začínajú
      sred:=sred+a;
      ak a>0 potom inc(n_pos_el);
      koniec;
      writeln("V",i,"-oi zdvih",n_pos_el,"polozitelnix elementov");
      koniec;
      sred:=sred/m/n;
      writeln("Srednee aritmeticheskoe:",sred:6:2);
      koniec.

    3. Napíšte program, ktorý na základe obdĺžnikovej celočíselnej matice 3x4 určí číslo stĺpca úplne vľavo, ktorý obsahuje iba kladné prvky. Ak takýto stĺpec neexistuje, zobrazí sa správa. Príloha 3

    program num_posit;
    const m=3;
    n = 4;
    var
    a: pole celých čísel;
    i,j,num:integer;
    all_posit:boolean;
    začať
    randomizovať;
    for i:=1 to m do
    začať
    pre j:=1 až n do
    začať
    a:=random(100)-10;
    písať(a:4);
    koniec;
    writeln;
    koniec;
    num:=0;
    pre j:=1 až n sa začínajú
    all_posit:=true;
    for i:=1 to m do
    Ak< 0 then
    začať
    all_posit:=false;
    prestávka; koniec;
    if all_posit potom začnite
    num:=j; prestávka; koniec;
    koniec;
    ak číslo = 0, potom
    writeln("Takix stolbcov net")
    inak
    writeln("Stĺpec číslo:",num);
    koniec.

    Študenti nahrávajú súbory v jazyku Pascal, analyzujú tento algoritmus, prezerajú si výsledky vykonávania programu, odpovedajú na ďalšie otázky:

    1. Ako je organizované dvojrozmerné pole?
    2. Čo znamená inc postup?
    3. Čo znamená postup prestávky?
    4. Ako sa používa generátor náhodných čísel?

    6. Formovanie zručností pri riešení problémov.

    Riešenie problémov na jednotlivých kartách samostatne, v algoritmickom prostredí.

    Príklady úloh:

    1. Daná je matica A 5x5 obsahujúca náhodné prvky. Nájdite súčet všetkých prvkov matice.
    2. Zobrazte Pytagorovu tabuľku.
    3. Nájdite súčet kladných prvkov zadaného stĺpca matice A 5x5 celých čísel.

    7. Výsledky vyučovacej hodiny, zadanie domácich úloh.

    Zhrnutie. Hodnotenie úrovne asimilácie.

    D/Z abstrakt, úlohy:

    Pre všetkých:

    1. Dané dvojrozmerné štvorcové pole. Nájdite počet riadkov, ktorých všetky prvky sa rovnajú nule.
    2. Dané dvojrozmerné štvorcové pole. Nájdite počet riadkov, pričom prvky v každom z nich sú rovnaké.
    3. Určte minimálny prvok dvojrozmerného poľa. Vytlačte číslo riadku obsahujúceho maximálny počet minimálnych prvkov, ak nejaké existujú.
    4. Dané dvojrozmerné pole. Nájdite čiaru s najväčším a najmenším súčtom prvkov. Zobrazte nájdené reťazce a súčty ich prvkov.

    Pre študentov, ktorí majú predstavu o dvojrozmerných poliach a ich riešení:

    Namiesto prednášky - riešenie problémov so zvýšenou zložitosťou.

    Príklady úloh:

    1. Dané dvojrozmerné pole. Transformujte ho podľa nasledujúceho pravidla: urobte z riadku s číslom N stĺpec s číslom N a zo stĺpca riadok.
    2. V dvojrozmernom poli X sú všetky čísla odlišné. V každom riadku sa vyberie minimálny prvok, potom sa spomedzi týchto čísel vyberie maximum. Vytlačte číslo riadku poľa X obsahujúceho vybrané číslo.
    3. Dané dvojrozmerné pole. Nájdite najväčšiu z hodnôt prvkov prvého a posledného riadku.
    4. Napíšte program, ktorý vytlačí dvojrozmerné pole riadok po riadku z klávesnice a vypočíta súčet jeho prvkov po stĺpcoch.
    5. Napíšte program, ktorý vypočíta súčet diagonálnych prvkov štvorcovej matice.