Dané dvojrozmerné pole. Dané dvojrozmerné pole reálnych čísel. Stanovenie cieľov, stanovenie úloh

Príklad 3

Dané celočíselné dvojrozmerné pole rozmerov n x m,nájdite najmenší prvok poľa a číslo riadku, v ktorom sa nachádza.

Bloková schéma:
Kód programu:
Var a: pole celého čísla;
i, j, m, n, min, k: celé číslo;
Začať
Napíšte(‘koľko riadkov?‘); Readln(n);
Napíšte(‘koľko stĺpcov?‘); Readln(m);
Pre i:=1 až n urobte
Pre j:=1 až m urobte
začať
write(‘a[‘,i,’,’,j,’]=’); readln(a); (vstup 2D poľa)
koniec;
min:=a; (minimálny prvok)
k:=1; (poradové číslo)
Pre i:=1 až n urobte
Pre j:=1 až m urobte
Ak< min then
začať
min:=a; k:=i; (vyhľadajte minimum a „zapamätajte si“ číslo riadku)
koniec;
Writeln('najmenšie číslo ',min,' je v ', k , ' riadok');
Koniec.

Úlohy

  1. . Nájdite súčet a súčin všetkých prvkov poľa.
  2. Dané celočíselné dvojrozmerné pole, rozmery n x m. Nájdite súčet a súčin párnych prvkov.
  3. Dané celočíselné dvojrozmerné pole, rozmery n x m. Nájdite súčet a súčin prvkov, ktoré sú násobkami 3 a 5.
  4. Dané celočíselné dvojrozmerné pole, rozmery n x m. Nájdite počet záporných prvkov väčší ako -9.
  5. Dané celočíselné dvojrozmerné pole, rozmery n x m.
  6. Dané celočíselné dvojrozmerné pole, rozmery n x m
  7. Dané celočíselné dvojrozmerné pole, rozmery n x m
  8. Dané celočíselné dvojrozmerné pole, rozmery n x m. Nájdite aritmetický priemer všetkých prvkov poľa.
  9. Dané celočíselné dvojrozmerné pole, rozmery n x m. Zistite, ktoré číslo sa v ktorom riadku vyskytuje ako prvé - kladné alebo záporné.
  10. Dané celočíselné dvojrozmerné pole, rozmery n x m. Zistite, ktorý riadok má vzostupnú alebo zostupnú postupnosť.
  11. Dané celočíselné dvojrozmerné pole, rozmery n x m. Odstúpiťjeho prvky, ktorých indexy sú mocniny dvoch (1, 2, 4, 8, 16, ...).
  12. Dané celočíselné dvojrozmerné pole, rozmery n x m. Nájdite počet prvkov, ktoré sú násobkami 7.
  13. Dané celočíselné dvojrozmerné pole, rozmery n x m. Zobrazte prvky, ktoré sú druhou mocninou čísla.
  14. Dané celočíselné dvojrozmerné pole, rozmery n x m. Nájdite počty nepárnych prvkov na párnych miestach.
  15. Dané celočíselné dvojrozmerné pole, rozmery n x m. Nájdite maximum a minimum. Vymeňte ich.
  16. Dané celočíselné dvojrozmerné pole, rozmery n x m. Nahraďte všetky prvky ich štvorcami.
  17. Dané celočíselné dvojrozmerné pole, rozmery n x m. Nahraďte všetky prvky ich opačnými hodnotami.
  18. Dané celočíselné dvojrozmerné pole, rozmery n x m. Vymeňte prvý a posledný prvok.
  19. Dané celočíselné dvojrozmerné pole, rozmery n x m. Vytvorte nové pole pozostávajúce z protiľahlých zodpovedajúcich prvkov.
  20. Dané celočíselné dvojrozmerné pole, rozmery n x m. Zobrazte tie prvky, ktorých zvyšok po delení m sa rovná k.
  21. Zadávajú sa výsledky testu 10 študentov. Určte počet známok neuspokojivé, uspokojivé, dobré a vynikajúce. Zobrazte priemernú známku získanú študentmi v teste.
  22. Zadajte známky N študentov v K predmetoch. Určte a zobrazte počet študentov, ktorí nedostali ani jednu „5“.
  23. V skupine je N žiakov, žiaci dostali za skúšku štyri známky. Určte počet neúspešných žiakov a priemerné skóre skupiny.
  24. Dané celočíselné dvojrozmerné pole, rozmery n x m. Vypočítajte súčet čísel, ktorých poradové čísla sú Fibonacciho čísla.
  25. Dané celočíselné dvojrozmerné pole, rozmery n x m. Pridajte zodpovedajúce prvky.
  • vzdelávacie: podporovať vytvorenie myšlienky dvojrozmerného poľa a základných vlastností štvorcových matíc; zvážiť akcie, ktoré možno vykonať na matriciach; zaviesť štandardné algoritmy spracovania matíc v jazyku Pascal; vytvárať podmienky pre rozvoj schopnosti riešiť algoritmy s dvojrozmernými poľami;
  • vyvíja:
  • vytvárať podmienky pre rozvoj zručností pracovať vo vymedzenom časovom období, rozvoj samostatnej práce a rozvoj schopnosti zapisovať si poznámky.
  • vzdelávacie:
  • podporovať vytváranie psychickej pohody pre prácu v triede, rozvoj vyrovnanosti, zodpovedného prístupu k práci a zvýšenú motiváciu pre vzdelávacie aktivity.

Typ lekcie: kombinovaná.

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

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

Vybavenie: zadania na prácu v triede (samostatné kartičky, zadania na počítači), poznámky na tabuľu.

Počas tried:

1. Organizačný moment.

Pozdravujem.
Téma je nahlásená.
Stanovte si ciele a ciele lekcie.

2. Aktualizácia získaných vedomostí

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

3. Stanovenie cieľa, stanovenie úlohy:

  • definovať koncept dvojrozmerného poľa;
  • zvážte formu zápisu 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 spracovania matíc v jazyku Pascal;
  • vytvárať podmienky pre rozvoj schopnosti riešiť algoritmy s dvojrozmernými poľami;
  • 4. Prednáška

    Definícia.

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

    Formát záznamu

    <имя>: pole[n_index_1..in_index_1, n_index_2 ..in_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:= náhodný(100);

    Pri inicializácii dvojrozmerných polí je každý riadok uzavretý do extra páru 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 štvorec. A(n,n) – štvorcová matica

    Základné vlastnosti štvorcových matíc:

    1. Štvorcové matice majú hlavnú a bočnú uhlopriečku. Napríklad pre maticu A obsahuje hlavná uhlopriečka prvky 1, 5 a 9 a vedľajšia uhlopriečka prvky 3, 5 a 7.

    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 sú umiestnené na bočnej diagonále;
    i+j< n+1– элементы расположены над побочной диагональю;
    i+j> n+1– prvky sú umiestnené pod bočnou uhlopriečkou;

    2. Štvorcová matica, v ktorej sú všetky prvky, okrem prvkov hlavnej uhlopriečky, rovné nule, sa nazýva 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) vymeníte riadky a stĺpce, dostanete maticu A t (m,n), ktorá sa nazýva transponovaná matica.

    Základné operácie, ktoré možno vykonávať na matriciach

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

    Typické algoritmy spracovania matíc 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 matríc:
    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

    „Okresová mapa“ 2 možnosti

    1 možnosť

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

      ... ... dvojrozmerných polí, 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. Doplňte chýbajúce definície:
    4. Hlavné operácie, ktoré možno vykonávať s maticami, sú: súčet, súčin dvoch matíc,….,….

    5. Doplňte chýbajúce definície:
    6. Matica, ktorej počet riadkov sa 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. Doplňte chýbajúce definície:
    2. ...... 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.

    3. Doplň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. Doplň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ú typickú úlohu plní algoritmus?

    Algoritmy v jazyku Pascal

    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. Dodatok 2
    2. priemer programu_n;
      const m=3;
      n = 4;
      var

      i,j,n_pos_el:integer;
      medium:real;
      začať
      for i:=1 to m do
      for j:=1 to n do read(a);
      sred:=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 arifmeticheskoe:",sred:6:2);
      koniec.

    3. Napíšte program, ktorý pre obdĺžnikovú celočíselnú maticu 3x4 určí číslo stĺpca úplne vľavo, ktorý obsahuje iba kladné prvky. Ak takýto stĺpec neexistuje, zobrazí sa správa. Dodatok 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ú tieto algoritmy, zobrazujú výsledky vykonávania programu a 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 s veľkosťou 5x5 celých čísel.

    7. Zhrnutie hodiny, zadanie domácej úlohy.

    Zhrnutie. Hodnotenie úrovne asimilácie.

    D/Z sumár, úlohy:

    Pre všetkých:

    1. Dané dvojrozmerné štvorcové pole. Nájdite čísla riadkov, ktorých všetky prvky sú nula.
    2. Dané dvojrozmerné štvorcové pole. Nájdite čísla 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 riadok s najväčším a najmenším súčtom prvkov. Zobrazte nájdené reťazce a súčty ich prvkov.

    Pre študentov, ktorí rozumejú dvojrozmerným poliam a ako ich riešiť:

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

    Príklady úloh:

    1. Dané dvojrozmerné pole. Preveďte ho podľa nasledujúceho pravidla: urobte riadok s číslom N na stĺpec s číslom N a stĺpec na riadok.
    2. V dvojrozmernom poli X sú všetky čísla rôzne. V každom riadku sa vyberie minimálny prvok a potom sa spomedzi týchto čísel vyberie maximum. Vytlačte číslo riadku poľa X, v ktorom sa nachádza 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ý zobrazí dvojrozmerné pole riadok po riadku z klávesnice a vypočíta súčet jeho prvkov v stĺpcoch.
    5. Napíšte program, ktorý vypočíta súčet diagonálnych prvkov štvorcovej matice.

    Prišla ďalšia várka počítačových problémov pre školákov. Tentokrát sa pozrieme na prácu s dvojrozmernými poľami v C++. Tieto problémy 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.
    Vstupný formát
    Program dostane ako vstup veľkosti poľa n a m, potom každý n riadkov s m číslami. n a m nepresahujú 100.
    Výstupný formát
    Vytlačte dve čísla: číslo riadku a číslo stĺpca, ktoré obsahujú najväčší prvok v dvojrozmernom poli. Ak existuje niekoľko takýchto prvkov, zobrazí sa ten s menším číslom riadku a ak sú čísla riadkov rovnaké, zobrazí sa ten s menším číslom stĺpca.

    Vzorový vstup: 3 4 0 3 2 4 2 3 5 5 5 1 2 3 Ukážkový 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

    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 stredný riadok poľa, stredný stĺpec poľa, hlavnú uhlopriečku a vedľajšiu uhlopriečku znakmi „*“. 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 Ukážkový 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 nepresahujúce 100. Vytvorte pole veľkosti 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 uhlopriečkou čísla 1. Na ďalších dvoch uhlopriečkach čísla 2 atď.

    Vzorový vstup: 5 Ukážkový 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 očíslované i a j v poli.
    Vstupný formát
    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
    Vytlačte výsledok.

    Vzorový vstup: 0 1 Ukážkový 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; }

    Problém #5

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

    Vzorový vstup: 3 0 1 2 1 2 3 2 3 4 Ukážkový 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; }

    Problém #6

    Je dané štvorcové dvojrozmerné pole s veľkosťou n × n a číslom k. Vypíšte prvky k-tej uhlopriečky pod hlavnou uhlopriečkou (t. j. ak k = 1, potom musíte vypísať prvky prvej uhlopriečky ležiacej pod hlavnou, ak k = 2, potom druhú uhlopriečku atď.).
    Hodnota k môže byť záporná, napríklad ak k = −1, potom musíte zobraziť hodnotu prvej uhlopriečky ležiacej nad hlavnou. Ak k = 0, potom musíte vypísať prvky hlavnej uhlopriečky.
    Program dostane ako vstup číslo n nepresahujúce 10, potom pole veľkosti n × n, 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; }

    Problém č.7

    Dané dvojrozmerné pole s veľkosťou n × m (n a m nepresahujú 1 000). Pole symetrické voči hlavnej uhlopriečke 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.
    Vzhľadom na pole vytvorte transponované pole a zobrazte ho na obrazovke.

    Vzorový vstup: 3 4 11 12 13 14 21 22 23 24 31 32 33 34 Ukážkový 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; }

    Problém č.8

    Existuje n radov kina, každý s m sedadlami (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 dané miesto je už predaný, číslo 0 znamená, že miesto je voľné. Bola prijatá žiadosť o predaj k lístkov na susedné sedadlá v rovnakom rade. Zistite, či je možné túto požiadavku dokončiť.
    Vstupný formát
    Program dostane ako vstup čísla n a m. Ďalej nasleduje n riadkov obsahujúcich m čísel (0 alebo 1), oddelených medzerami. Potom je dané číslo k.
    Výstupný formát
    Program by mal vytlačiť číslo radu, v ktorom je k po sebe nasledujúcich voľných 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 Ukážkový 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; }

    Problém č.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.
    Vstupný formát
    Zadajte dve čísla n a m, ktoré nepresahujú 100, potom pole veľkosti n × m.
    Výstupný formát
    Vytlačte výsledné pole. Pri výstupe oddeľte čísla jednou medzerou.

    Vzorový vstup: 3 4 11 12 13 14 21 22 23 24 31 32 33 34 Ukážkový 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; }

    Problém č.10

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

    Vzorový vstup: 3 5 Ukážkový 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; }

    Problém č.11

    Vzhľadom na čísla n a m vyplňte dvojrozmerné pole veľkosti n × m číslami od 1 do n × m „uhlopriečok“, ako je znázornené v príklade.
    Vstupný formát

    Výstupný formát
    Vypíšte výsledné pole a každému prvku prideľte presne 4 znaky.

    Vzorový vstup: 3 5 Ukážkový 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_row = 0; min_row< n; min_row++) { if (min_row >0) začiatočný_riadok = poz. - 1; inak zaciatocny_riadok = 0; pre (poz = počiatočný_riadok; poz< m; pos++) { row = min_row; for (int col = pos; col >= 0; col--) ( if (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; }

    Problém č.12

    Uvedené sú čísla n a m. Vyplňte pole n × m v šachovnicovom vzore: bunky jednej farby sú vyplnené nulami a bunky inej farby sú vyplnené prirodzenými číslami zhora nadol, zľava doprava. Číslo 1 je napísané v ľavom hornom rohu.
    Vstupný formát
    Zadajte dve čísla n a m, ktoré nepresahujú 100.
    Výstupný formát
    Vypíšte výsledné pole a každému prvku prideľte presne 4 znaky.

    Vzorový vstup: 3 5 Ukážkový 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; }

    Problém č.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.
    Vstupný formát
    Zadajte dve čísla n a m, ktoré nepresahujú 100.
    Výstupný formát
    Vypíšte výsledné pole a každému prvku prideľte presne 4 znaky.

    Vzorový vstup: 4 5 Ukážkový 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 jazyku C. Zoznam úloh laboratórnej práce (kliknutím na odkaz sa dostanete na riešenie problému, ak je k dispozícii):

    Ďalšie úlohy:

    Výkon všetkých programov bol 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šenie pre vašu laboratórnu prácu 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 párneho počtu 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 nájdite počet prvkov, ktorých posledná číslica je 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("Masiv %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é): Dané dvojrozmerné pole. Zoraďte jeho riadky 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é): 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

    Dané dvojrozmerné pole 5x5. Usporiadajte zadávanie prvkov a výstup výsledkov 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 X 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é sa nachádzajú nad bočnou uhlopriečkou.

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

    18. Nájdite súčin prvkov, ktoré sú na párnych pozíciách (súčet indexov (i+j) pre X 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 sekundárnej 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 X 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:

    Kontrolné otázky

    1. Čo je textový režim a ako sa líši od normálneho 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 vo veľkej miere využívajú binárne obvody a dvojkovú číselnú sústavu. 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. Prvá kapitola poskytuje základné pojmy z teórie logickej algebry a skúma rôzne formy reprezentácie booleovských funkcií. Druhá kapitola je venovaná problematike minimalizácie reprezentácií booleovských funkcií, ktorá je základom pre abstraktnú syntézu diskrétnych zariadení. Tretia kapitola obsahuje informácie o metódach implementácie booleovských funkcií založených na spínacích obvodoch, ktoré sú 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 oddiely 3.1, 3.2 – .