Glede na dvodimenzionalno matriko realnih števil. Primeri reševanja problemov z dvodimenzionalnimi nizi, problemi za neodvisno rešitev Glede na dvodimenzionalno matriko celih števil

Še ena serija nalog računalništva za šolarje je prišla pravočasno. Tokrat si poglejmo delo z dvodimenzionalnimi matrikami v C ++. Te naloge so precej zanimive. In večina mi je bila všeč.

Problem številka 1

Poiščite indekse prvega pojavljanja največjega elementa.
Oblika vhodnih podatkov
Program prejme kot vhod dimenzije matrike n in m, nato n vrstic z m številkami v vsaki. n in m ne presegata 100.
Oblika izhodnih podatkov
Natisnite dve številki: številko vrstice in številko stolpca, ki vsebuje največji element v dvodimenzionalni matriki. Če je takih elementov več, se prikaže tisti z spodnjo številko vrstice, če pa so številke vrstic enake, potem tisti z spodnjo številko stolpca.

Vzorec vnosa: 3 4 0 3 2 4 2 3 5 5 5 1 2 3 Vzorec izhoda: 1 2

#vključi z uporabo imenskega prostora std; int main () (int n, m; cin >> n >> m; int a; // branje za (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; za (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; }

Problem številka 2

Glede na liho število n, ki ne presega 15. Ustvarite dvodimenzionalno matriko n × n elementov in jo napolnite z ».« (vsak element niza je niz z enim znakom). Nato vnesite srednjo vrstico matrike, srednji stolpec matrike, glavno in stransko diagonalo z znaki "*". Posledično mora "*" v matriki oblikovati sliko zvezdice. Natisnite nastalo matriko na zaslon in ločite elemente matrike s presledki.

Vzorec vnosa: 5 Vzorec izhoda: * . * . * . * * * . * * * * * . * * * . * . * . *

#vključi z uporabo imenskega prostora 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; }

Problem številka 3

Dobili ste število n, ki ne presega 100. Ustvarite polje n × n in ga izpolnite v skladu z naslednjim pravilom. Glavna diagonala mora vsebovati številki 0. Na dveh diagonalah, ki mejijo na glavno, številke 1. Na naslednjih dveh diagonalah številki 2 itd.

Vzorec vnosa: 5 Vzorec izhoda: 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

#vključi #vključi z uporabo imenskega prostora std; int main () (int n; cin >> n; int a; // obdelava za (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; }

Problem številka 4

Glede na dvodimenzionalno matriko in dve številki: i in j. Zamenjajte stolpce, oštevilčeni i in j v matriki.
Oblika vhodnih podatkov
Program prejme kot vhod velikost matrike n in m, ki ne presega 100, nato elemente matrike, nato številki i in j.
Oblika izhodnih podatkov
Iznesite rezultat.

Vzorec vnosa: 0 1 Vzorec izhoda: 12 11 13 14 22 21 23 24 32 31 33 34

#vključi #vključi z uporabo imenskega prostora std; int main () (int n, m, x, y, temp; cin >> n >>< n; i++) { for (int j = 0; j < m; j++) { cin >> a [i] [j]; )) cin >> x >> y; // obdelava za (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; }

Problem številka 5

Dobili ste število n, ki ne presega 10, in matriko n × n. Preverite, ali je ta niz simetričen glede na glavno diagonalo. Natisnite besedo »DA«, če je matrika simetrična, in besedo »NE« drugače.

Vzorec vnosa: 3 0 1 2 1 2 3 2 3 4 Vzorec izhoda: DA

#vključi #vključi z uporabo imenskega prostora std; int main () (int n; bool simetričen; cin >> n; int a; // polnjenje za (int i = 0; i< n; i++) { for (int j = 0; j < n; j++) { cin >> a [i] [j]; )) // obdelava simetrična = true; za (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; }

Problem številka 6

Dobili ste kvadratni dvodimenzionalni niz velikosti n × n in številko k. Natisnite elemente k -te diagonale pod glavno diagonalo (to je, če je k = 1, potem morate natisniti elemente prve diagonale pod glavno, če je k = 2, nato drugo diagonalo itd.).
Vrednost k je lahko negativna, na primer, če je k = −1, morate prikazati vrednost prve diagonale, ki leži nad glavno. Če je k = 0, morate prikazati elemente glavne diagonale.
Program prejme kot vhod številko n, ki ne presega 10, nato matriko velikosti n × n, nato številko k.

Vzorec vhoda 1: 4 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 1 Vzorec izhoda 1: 5 1 6 Vzorec vhoda 2: 4 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 -2 Vzorec izhoda 2: 3 8

#vključi z uporabo imenskega prostora std; int main () (int n, k; cin >> n; int a [n] [n]; // polnjenje za (int i = 0; i< n; i++) { for (int j = 0; j < n; j++) { cin >> a [i] [j]; )) cin >> k; // obdelava in izhod za (int i = 0; i< n; i++) { for (int j = 0; j < n; j++) { if (i - j - k == 0) cout << a[i][j] << " "; } } return 0; }

Problem številka 7

Dobite dvodimenzionalno matriko n × m (n in m ne presegata 1000). Niz, ki mu je simetričen glede na glavno diagonalo, se imenuje transponiran na dano. Ima dimenzije m × n: vrstice izvirne matrike postanejo stolpci prenesene matrike, stolpci izvirne matrike postanejo vrstice prenesene.
Za dano matriko zgradite transponirano matriko in jo prikažite.

Vzorec vnosa: 3 4 11 12 13 14 21 22 23 24 31 32 33 34 Vzorec izhoda: 11 21 31 12 22 32 13 23 33 14 24 34

#vključi z uporabo imenskega prostora std; int main () (int n, m, x, y, temp; 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; }

Problem številka 8

Kino ima n vrstic z m sedeži (n in m ne presegata 20). Podatki o prodanih vstopnicah so shranjeni v dvodimenzionalnem nizu, številka 1 pomeni, da je vozovnica za ta sedež že prodana, številka 0 pomeni, da je sedež prazen. Obstaja zahteva za prodajo k vstopnic za sosednja sedeža v isti vrsti. Ugotovite, ali je takšno zahtevo mogoče izpolniti.
Oblika vhodnih podatkov
Program prejme kot vhod številki n in m. Nato sledi n vrstic, ki vsebujejo m številk (0 ali 1), ločenih s presledki. Nato je podano število k.
Oblika izhodnih podatkov
Program naj prikaže število vrstic, v katerih je k zaporednih prostih mest. Če je takih vrstic več, iznesite številko najmanjše ustrezne vrstice. Če ni ustrezne serije, natisnite številko 0.

Vzorec vnosa: 3 4 0 1 0 1 1 0 0 1 1 1 1 1 2 Vzorec izhoda: 2

#vključi z uporabo imenskega prostora std; int main () (int n, m, k, r = 0; cin >> n >> m; int a [n] [m]; // polnjenje za (int i = 0; i< n; i++) { for (int j = 0; j < m; j++) { cin >> a [i] [j]; )) cin >> k; // obdelava za (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; }

Problem številka 9

Dobili ste pravokotno polje n × m. Zavrtite ga za 90 stopinj v smeri urinega kazalca in rezultat zapišite v novo matriko m × n.
Oblika vhodnih podatkov
Vnesite dve številki n in m, ki ne presegata 100, nato pa matriko velikosti n × m.
Oblika izhodnih podatkov
Natisnite nastalo matriko. Številke v izhodu ločite z enim presledkom.

Vzorec vnosa: 3 4 11 12 13 14 21 22 23 24 31 32 33 34 Vzorec izhoda: 31 21 11 32 22 12 33 23 13 34 24 14

#vključi z uporabo imenskega prostora std; int main () (int n, m; cin >> n >> m; int a [n] [m]; int b [m] [n]; // polnjenje za (int i = 0; i< n; i++) { for (int j = 0; j < m; j++) { cin >> a [i] [j]; )) // obdelava za (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; }

Problem številka 10

Glede na številki n in m napolnite dvodimenzionalno polje velikosti n × m s številkami od 1 do n × m "kača", kot je prikazano v primeru.
Oblika vhodnih podatkov
Vnesite dve številki n in m, od katerih vsaka ne presega 20.
Oblika izhodnih podatkov

Vzorec vnosa: 3 5 Vzorec izhoda: 1 2 3 4 5 10 9 8 7 6 11 12 13 14 15

#vključi z uporabo imenskega prostora std; int main () (int n, m, c = 0; cin >> n >> m; int a [n] [m]; // obdelava za (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; }

Problem številka 11

Glede na številki n in m dvodimenzionalno matriko n × m napolnimo s številkami od 1 do n × m z „diagonalami“, kot je prikazano v primeru.
Oblika vhodnih podatkov

Oblika izhodnih podatkov
Oddajte nastalo matriko in dodelite točno 4 znake izhodu vsakega elementa.

Vzorec vnosa: 3 5 Vzorec izhoda: 1 2 4 7 10 3 5 8 11 13 6 9 12 14 15

#vključi z uporabo imenskega prostora std; int main () (int n, m, pos = 0, vrstica = 0; cin >> n >> m; int a [n] [m]; // obdelava int start_row = 0; int številka = 1; za ( int min_row = 0; min_row< n; min_row++) { if (min_row >0) start_row = poz - 1; else start_row = 0; for (pos = start_row; poz< m; pos++) { row = min_row; for (int col = pos; col >= 0; stolpec--) (če (vrstica< 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; }

Problem številka 12

Glede na številki n in m. Izpolnite matriko n × m v vzorcu šahovnice: celice ene barve so napolnjene z ničlami, celice druge barve pa z naravnimi številkami od zgoraj navzdol, od leve proti desni. Številka 1 je napisana v zgornjem levem kotu.
Oblika vhodnih podatkov
Vneseta se dve številki n in m, ki ne presegata 100.
Oblika izhodnih podatkov
Oddajte nastalo matriko in dodelite točno 4 znake izhodu vsakega elementa.

Vzorec vnosa: 3 5 Vzorec izhoda: 1 0 2 0 3 0 4 0 5 0 6 0 7 0 8

#vključi z uporabo imenskega prostora std; int main () (int n, m, sm; cin >> n >> m; int a [n] [m]; // obdelava int številka = 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; }

Problem številka 13

Glede na številki n in m napolnite dvodimenzionalno matriko n × m s številkami od 1 do n × m v spirali, ki se začne od zgornjega levega kota in zvije v smeri urinega kazalca, kot je prikazano v primeru.
Oblika vhodnih podatkov
Vneseta se dve številki n in m, ki ne presegata 100.
Oblika izhodnih podatkov
Oddajte nastalo matriko in dodelite točno 4 znake izhodu vsakega elementa.

Vzorec vnosa: 4 5 Vzorec izhoda: 1 2 3 4 5 14 15 16 17 6 13 20 19 18 7 12 11 10 9 8

#vključi z uporabo imenskega prostora 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

Prosimo, omogočite JavaScript za ogled
  • vzgojno: prispevati k oblikovanju ideje o dvodimenzionalnem nizu in osnovnih lastnostih kvadratnih matrik; razmislite o dejanjih, ki jih je mogoče izvesti na matrikah; seznaniti se s tipičnimi algoritmi za obdelavo matrik v jeziku Pascal; ustvariti pogoje za oblikovanje sposobnosti reševanja algoritmov z dvodimenzionalnimi nizi;
  • razvoj:
  • ustvariti pogoje za razvoj spretnosti za delo v omejenem časovnem obdobju, razvoj sposobnosti za samostojno delo, razvoj spretnosti za delo z notami.
  • izobraževalni:
  • spodbujati ustvarjanje psihološkega udobja za delo v razredu, spodbujati zbranost, odgovoren odnos do svojega dela in povečati motivacijo za izobraževalne dejavnosti.

Vrsta lekcije: kombinirana.

Metode poučevanja: predavanje, samostojno delo.

Oblike organizacije: frontalno delo, individualno delo.

Oprema: naloge za delo v razredu (posamezne kartice, naloga na računalniku), zapiski na tabli.

Med poukom:

1. Organizacijski trenutek.

Pozdravi.
Tema je prijavljena.
Postavite si cilj lekcije in naloge.

2. Uresničevanje pridobljenega znanja

Glavne točke prejšnje teme se govorijo ustno: "Enodimenzionalni nizi". Frontalna mini anketa o osnovnih definicijah.

3. Postavitev ciljev, postavljanje ciljev:

  • opredeliti pojem dvodimenzionalne matrike;
  • razmislite o zapisni obliki dvodimenzionalne matrike
  • razmislite o osnovnih lastnostih kvadratnih matrik;
  • razmislite o dejanjih, ki jih je mogoče izvesti na matrikah;
  • spoznati tipične algoritme za obdelavo matrik v jeziku Pascal;
  • ustvariti pogoje za oblikovanje sposobnosti reševanja algoritmov z dvodimenzionalnimi nizi;
  • 4. Predavanje

    Opredelitev.

    Dvodimenzionalna matrika je zbirka podatkov, katerih vsaka vrednost je odvisna od dveh števil, ki jih lahko razumemo kot indeks stolpca v matrici.

    Format snemanja

    <имя>: matriko[n_index_1..in_index_1, n_index_2 ..in_index_2] od <тип>

    A: niz celih števil;

    Če želite uporabiti element matrike, morate podati ime matrike in indeks elementa. Prvi indeks ustreza številki vrstice, drugi številki stolpca. Na primer:

    za i: = 1 do n storiti
    za j: = 1 do n storiti
    a: = naključno (100);

    Pri inicializaciji dvodimenzionalnih nizov je vsaka vrstica zaprta v dodatni par oklepajev:

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

    Matrice so analogne nizom Pascal v matematiki. Matriko, katere število vrstic je enako številu stolpcev, imenujemo kvadratna. A (n, n) - kvadratna matrika

    Osnovne lastnosti kvadratnih matrik:

    1. Kvadratne matrice imajo glavno in stransko diagonalo. Na primer, za matriko A glavna diagonala vsebuje elemente 1,5 in 9, sekundarna pa 3, 5 in 7.

    i = j - elementi se nahajajo na glavni diagonali;
    i> j - elementi se nahajajo pod glavno diagonalo;
    jaz i? j - elementi se nahajajo na glavni diagonali in spodaj;
    i + j = n + 1– elementi se nahajajo na stranski diagonali;
    i + j< n+1– элементы расположены над побочной диагональю;
    i + j> n + 1– elementi se nahajajo pod stransko diagonalo;

    2. Kvadratna matrika, v kateri so vsi elementi, razen elementov glavne diagonale, enaki nič diagonalna matrika

    3. Kliče se diagonalna matrika, v kateri so vsi elementi na glavni diagonali enaki 1 matriko enot

    4. Če vrstice in stolpce v matriki A (m, n) zamenjamo, potem dobimo matriko A t (m, n), ki se imenuje transponirana matrika.

    Osnovna dejanja, ki jih je mogoče izvesti na matrikah

    • povzeti;
    • poiščite razliko;
    • produkt matrike za neko število;
    • produkt dveh matrik.

    Tipični algoritmi za obdelavo matrik v jeziku Pascal

    1. Matrični izhod v obliki tabele:
    2. za i: = 1 do n storiti
      začeti
      za j: = 1 do m do
      pisati (a: 4);
      writeln
      konec;

    3. Uporaba generatorja naključnih števil:
    4. naključno določiti;
      za i: = 1 do m storiti
      začeti
      za j: = 1 do n storiti
      začeti
      a: = naključno (100) -10;
      pisati (a: 4);
      konec;
      writeln;
      konec;

    5. 2. način podajanja matrike v obliki tabele:
    6. za i: = 1 do n storiti
      za j: = 1 do m do
      če j> m, potem napišite (a: 4)
      else writeln (a: 4);

    7. Seštevanje matric:
    8. za i: = 1 do n storiti
      začeti
      za j: = 1 do m do
      c: = a + b
      konec;

    9. Matrična transpozicija je zrcalna slika njenih elementov glede na glavno diagonalo. To lahko storite z uvedbo novega niza:

    za i: = 1 do n storiti
    za j: = 1 do n storiti
    b = a;

    5. Primarni nadzor

    "Konturni zemljevid" 2 možnosti

    Možnost 1

    1. Popravite netočnosti v opisu dvodimenzionalne matrike:
    2. Var
      A = niz celih števil;

      ... ... dvodimenzionalnih nizov je vsaka vrstica zaprta v dodatni par oklepajev:

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

    3. Vstavite manjkajoče definicije:
    4. Osnovne operacije, ki jih je mogoče izvesti nad matrikami: seštevanje, produkt dveh matrik,….,….

    5. Vstavite manjkajoče definicije:
    6. Matrika s številom vrstic, enakim številu stolpcev, se imenuje…. ... ...

    7. Poiščite napake v algoritmu:

    za i: = 1 do n storiti
    začeti
    za j: = 1 do m do
    c: = a + a
    konec;

    Možnost 2

    1. Odpravite netočnosti v opisu matrike:

    const
    n = 4; m = 3;
    tip
    mas: niz celega števila;

    1. Vstavite manjkajoče definicije:
    2. …… je zbirka podatkov, katerih vsaka vrednost je odvisna od dveh števil, ki se lahko štejeta za indeks stolpca v matrici.

    3. Vstavite manjkajoče definicije:
    4. Kliče se diagonalna matrika, v kateri so vsi elementi na glavni diagonali enaki ... matriko enot

    5. Vstavite manjkajoče definicije:
    6. Kvadratna matrika, v kateri so vsi elementi, razen elementov glavne diagonale, enaki nič … … .

    7. Poiščite napake v algoritmu:

    naključno določiti;
    za i: = 1 do m storiti
    začeti
    za j: = 1 do n storiti
    začeti
    a: = naključno (100) -10;
    konec;
    konec;

    Kakšno običajno nalogo opravlja algoritem?

    Pascal algoritmi

    1. Napišite program, ki za celoštevilčno matriko 3x4 določa aritmetično sredino njenih elementov in število pozitivnih elementov v vsaki vrstici. Dodatek 2
    2. program sred_n;
      const m = 3;
      n = 4;
      var

      i, j, n_pos_el: celo število;
      sred: pravi;
      začeti
      za i: = 1 do m storiti
      za j: = 1 do n preberi (a);
      sred: = 0;
      za i: = 1 do m se začne
      n_pos_el: = 0;
      za j: = 1 do n se začne
      sred: = sred + a;
      če je a> 0, potem inc (n_pos_el);
      konec;
      writeln ("V", i, "- oi poteza", n_pos_el, "polozitelnix elementov");
      konec;
      sred: = sred / m / n;
      writeln ("Srednee arifmeticheskoe:", sred: 6: 2);
      konec.

    3. Napišite program, ki za pravokotno celoštevilčno matriko 3x4 določa število skrajnega levega stolpca, ki vsebuje samo pozitivne elemente. Če takega stolpca ni, se prikaže sporočilo. Dodatek 3

    program num_posit;
    const m = 3;
    n = 4;
    var
    a: niz celih števil;
    i, j, num: celo število;
    all_posit: boolean;
    začeti
    naključno določiti;
    za i: = 1 do m storiti
    začeti
    za j: = 1 do n storiti
    začeti
    a: = naključno (100) -10;
    pisati (a: 4);
    konec;
    writeln;
    konec;
    število: = 0;
    za j: = 1 do n se začne
    all_posit: = res;
    za i: = 1 do m storiti
    če< 0 then
    začeti
    all_posit: = false;
    prekiniti; konec;
    če all_posit potem začni
    število: = j; prekiniti; konec;
    konec;
    če je num = 0, potem
    writeln ("Takix stolbcov net")
    drugače
    writeln ("Nomer stolbca:", št.);
    konec.

    Študenti nalagajo datoteke v Pascal, analizirajo ta algoritem, si ogledujejo rezultate izvajanja programa, odgovarjajo na dodatna vprašanja:

    1. Kako je organizirana dvodimenzionalna matrika?
    2. Kaj pomeni postopek inc?
    3. Kaj pomeni postopek odmora?
    4. Kako se uporablja generator naključnih števil?

    6. Oblikovanje veščin reševanja problemov.

    Reševanje težav na posameznih karticah samostojno, v algoritemskem okolju.

    Primeri nalog:

    1. Dobili boste matriko 5x5 A, ki vsebuje naključne elemente. Poiščite vsoto vseh elementov matrike.
    2. Prikažite Pitagorino tabelo.
    3. Poiščite vsoto pozitivnih elementov podanega stolpca matrice A 5x5.

    7. Povzetek lekcije, nastavitev domače naloge.

    Če povzamemo. Ocena stopnje asimilacije.

    D / Z povzetek, naloge:

    Za vse:

    1. Dobili boste dvodimenzionalno kvadratno polje. Poiščite številke vrstic z vsemi elementi enakimi nič.
    2. Dobili boste dvodimenzionalno kvadratno polje. Poiščite številke vrstic, elementi v katerih so enaki.
    3. Določite minimalni element dvodimenzionalne matrike. Natisnite številko vrstice, ki vsebuje največje število minimalnih elementov, če obstajajo.
    4. Glede na dvodimenzionalno matriko. Poiščite vrstico z največjo in najmanjšo vsoto elementov. Prikažite najdene vrstice in vsote njihovih elementov.

    Za študente, ki razumejo dvodimenzionalne matrike in kako jih rešiti:

    Namesto predavanja - reševanje problemov povečane kompleksnosti.

    Primeri nalog:

    1. Glede na dvodimenzionalno matriko. Pretvorite ga po naslednjem pravilu: vrstico s številko N naredite stolpec s številko N in stolpec z vrstico.
    2. V dvodimenzionalnem nizu X so vse številke različne. Najmanjši element je izbran v vsaki vrstici, nato je med temi številkami izbran največji. Natisnite številko vrstice matrike X, v kateri se nahaja izbrana številka.
    3. Glede na dvodimenzionalno matriko. Poiščite največjo vrednost elementov prve in zadnje vrstice.
    4. Napišite program, ki natisne dvodimenzionalno matriko po vrstici s tipkovnice in izračuna vsoto njenih elementov po stolpcih.
    5. Napišite program, ki izračuna vsoto diagonalnih elementov kvadratne matrike.

    Laboratorijsko delo za šole in univerze pri reševanju problemov obdelave dvodimenzionalnih nizov v jeziku C (C). Seznam laboratorijskih nalog (klik na povezavo vodi do rešitve problema, če obstaja):

    Dodatna opravila:

    Uspešnost vseh programov je bila preizkušena v CodeBlocks 16.01 (MinGW, Windows 10). Svoje rešitve za nerešene programe in predloge za izboljšanje obstoječih lahko podate v komentarjih na dnu strani.

    Prenesite laboratorijsko datoteko in vse izvorne kode programov v arhivu:


    Rešitev za svoje laboratorijsko delo lahko naročite tudi v C ++ in mnogih drugih:

    # 1: Glede na dvodimenzionalno matriko. Poiščite najmanjšo vsoto elementov niza. Rešite težavo brez uporabe dodatne enodimenzionalne matrike.

    #vključi #vključi #vključi int main () (int * arr; int x, y, i, j, vsota = 0, min = 0, minstr = 0; srand (čas (NULL)); x = 2 + rand ()% 10; y = 2 + rand ()% 6; arr = (int *) malloc (x * y * sizeof (int)); printf ("Niz% dx% d: \ n", x, y); za (i = 0; jaz

    # 2: Določite koordinate elementa, ki je najbližje povprečju vseh elementov v matriki.

    #vključi #vključi #vključi #vključi int main () (int * arr; int x, y, i, j, minx = 0, miny = 0; float ssum = 0; srand (čas (NULL)); x = 1 + rand ()% 10; y = 1 + rand ()% 7; arr = (int *) malloc (x * y * sizeof (int)); printf ("Niz% dx% d: \ n", x, y); za (i = 0 ; jaz

    # 9: Glede na dvodimenzionalno matriko sodo število stolpcev. Stolpci leve polovice matrike se zamenjajo s stolpci desne polovice.

    #vključi #vključi #vključi 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 ("Niz% dx% d: \ n", x, y); za (i = 0; i

    №14: Za vsako vrstico dvodimenzionalne matrike poiščite število elementov, katerih zadnja številka je enaka a.

    #vključi #vključi #vključi int main () (int * arr; int x, y, i, j, a, count; srand (čas (NULL)); printf ("Vnesite a:"); scanf ("% d", & a); x = 1 + rand ()% 10; y = 1 + rand ()% 7; arr = (int *) malloc (x * y * sizeof (int)); printf ("Masivni% dx% d: \ n" , x, y); za (i = 0; i

    # 21: Glede na dvodimenzionalno matriko b. Če jo obravnavamo kot matriko, prenesite b.

    #vključi #vključi #vključi 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% dx% d: \ n", x, y); za (i = 0; i

    # 1 (ekstra): glede na dvodimenzionalno matriko. Vrstice razporedite po padajočem vrstnem redu njihovih prvih elementov.

    #vključi #vključi #vključi 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 ("Niz% dx% d: \ n", x, y); za (i = 0; i * (arr + max * y)) max = j; za (k = 0; k

    # 2 (Dodatno): Ugotovite, ali je določena kvadratna matrika ortonormalna, tj. ena, pri kateri je točkovni produkt vsakega para ločenih nizov 0, pikčasti produkt vsakega niza pa je 1.

    #vključi #vključi int main () (int * arr; int x, i, j, k, sum = 0; printf ("Vnesite velikost kvadratne matrike:"); scanf ("% d", & x); arr = ( int *) malloc (x * x * sizeof (int)); printf ("Vnesite elemente matrike% dx% d: \ n", x, x); za (i = 0; i

    # 3 (Dodatno): glede na kvadratno dvodimenzionalno matriko. Poiščite vsoto elementov vsake diagonale vzporedno s stranjo.

    #vključi #vključi #vključi int main () (int * arr; int x, y, i, j, sum; srand (čas (NULL)); x = 2 + rand ()% 6; arr = (int *) malloc (x * y * sizeof (int)); printf ("Niz% dx% d: \ n", x, x); za (i = 0; i

    Naloge 2D matrike

    1) Glede na dvodimenzionalno matriko celih števil. Naredite program:

    a) prikaz elementa v zgornjem desnem kotu matrike;

    b) prikaz elementa v spodnjem levem kotu matrike;

    c) prikaz katerega koli elementa druge vrstice matrike;

    d) prikaz katerega koli elementa tretjega stolpca matrike;

    e) prikaz katerega koli elementa matrike.

    2) Glede na dvodimenzionalno celoštevilsko matriko. Zamenjava:

    a) elementi v zgornjem desnem in spodnjem levem kotu;

    b) elementi v spodnjem desnem in zgornjem levem kotu;

    3) Številka vrstice, na kateri je element glavne diagonale dvodimenzionalne matrike celih števil, je znana. Prikažite vrednost tega elementa.

    4) Zaslon (v eni vrstici):

    a) vsi elementi glavne diagonale matrike

    b) vsi elementi glavne diagonale matrike, začenši z elementom v spodnjem desnem kotu.

    5) Vrednosti vseh elementov glavne diagonale celoštevilčne matrike zamenjajte z ničlo.

    6) Vrednosti vseh elementov stranske diagonale celoštevilčne matrike zamenjajte z vrednostmi, enakimi 100.

    7) Določite:

    a) vsota elementov glavne diagonale matrike;

    b) vsota elementov stranske diagonale matrike;

    c) aritmetična sredina elementov glavne diagonale matrike;

    d) aritmetična sredina elementov stranske diagonale matrike;

    e) najmanjši (največji) element glavne diagonale matrike;

    f) največji (najmanjši) element stranske diagonale realnega niza;

    g) koordinate prvega največjega elementa glavne diagonale;

    h) koordinate prvega minimalnega elementa glavne diagonale.

    a) prikaže vse elemente pete vrstice matrike;

    b) prikaže vse elemente tretje vrstice matrike, začenši z zadnjim elementom te vrstice;

    c) prikaže vse elemente s-tega stolpca matrike;

    d) nadomesti vrednosti vseh elementov druge vrstice matrike s številko 5;

    e) vrednosti vseh elementov petega stolpca nadomestite s številko 10.

    f) določi največji (minimalni) element tretjega stolpca;

    9) Glede na dvodimenzionalno matriko celih števil. Naredite program:

    a) izračun produkta poljubnih dveh elementov katere koli vrstice matrike

    b) vsota vseh elementov katere koli vrstice matrike;

    10) Glede na dvodimenzionalno matriko celih števil. Določite:

    a) a) v katerem stolpcu matrike je vsota elementov manjša, v prvem ali zadnjem;

    b) b) v kateri vrstici je produkt elementov večji, v drugi ali v tretji.

    11) Glede na dvodimenzionalno celoštevilsko matriko 10 x 10. Prikažite del matrike:

    a) se nahaja nad glavno diagonalo;



    b) se nahaja pod glavno diagonalo;

    c) se nahaja nad stransko diagonalo;

    d) se nahaja pod stransko diagonalo;

    12) Glede na dvodimenzionalno matriko celih števil:

    a) poiščite največji (najmanjši) element v vsakem stolpcu;

    b) koordinate največjega (minimalnega) elementa;

    c) vsota lihih elementov v vsakem stolpcu (vrstici);

    d) število elementov, ki so večkratniki A ali B.

    e) poiščite črto z največjo vsoto elementov;

    f) poiščite stolpec z najmanjšo vsoto elementov.

    Glede na dvodimenzionalno matriko 5x5. Organizirajte vnos elementov, izhod rezultata v obliki oken. Po premoru spremenite barvo oken, v katerih so shranjeni elementi, določeni glede na pogoj.

    Možnosti zaposlitve:

    1.

    2.

    3.

    4.

    5.

    6.

    7.

    8.

    9.

    10.

    11. Poiščite zmnožek elementov, ki so nad glavno diagonalo. Vse lihe elemente zamenjajte s najdeno številko.

    12. Poiščite vsoto elementov, ki so v lihih položajih (vsota indeksov (i + j) za X ij je liho število). Vse negativne elemente zamenjajte s najdeno številko.

    13. Poiščite zmnožek vseh elementov, ki so na glavni diagonali. Vse elemente pete vrstice in drugega stolpca zamenjajte s najdeno številko.

    14. Poiščite aritmetično sredino elementov na glavni diagonali in aritmetično sredino na stranski diagonali. Zamenjajte elemente na diagonalah.

    15. Poiščite aritmetično sredino pozitivnih elementov, ki so nad glavno diagonalo. Vse negativne elemente zamenjajte s najdeno številko.

    16. Poiščite vsoto lihih elementov. Z najdeno številko zamenjajte vse elemente, ki so nad stransko diagonalo.

    17. Poiščite zmnožek elementov vrstice i in stolpca j (i, j-vnaprejšnji vnos s tipkovnice). Vse elemente pod sekundarno diagonalo zamenjajte s najdeno številko.

    18. Poiščite zmnožek elementov, ki so v parnih položajih (vsota indeksov (i + j) za X ij je liho število). Vse elemente na glavni diagonali zamenjajte s najdeno številko.

    19. Poiščite aritmetično sredino lihih elementov. Vse elemente stranske diagonale zamenjajte s najdeno številko.

    20. Poiščite vsoto vseh parnih elementov, ki so nad stransko diagonalo. Vse elemente četrte vrstice zamenjajte s najdeno številko.

    21. Poiščite zmnožek elementov, ki so nad glavno diagonalo. Vse lihe elemente zamenjajte s najdeno številko.

    22. Poiščite vsoto elementov, ki so v lihih položajih (vsota indeksov (i + j) za X ij je liho število). Vse negativne elemente zamenjajte s najdeno številko.

    23. Poiščite zmnožek vseh elementov, ki so na glavni diagonali. Vse elemente pete vrstice in drugega stolpca zamenjajte s najdeno številko.

    24. Poiščite aritmetično sredino elementov na glavni diagonali in aritmetično sredino na stranski diagonali. Zamenjajte elemente na diagonalah.

    25. Poiščite aritmetično sredino pozitivnih elementov, ki so nad glavno diagonalo. Vse negativne elemente zamenjajte s najdeno številko.

    Na primer: poiščite aritmetično sredino elementov na glavni diagonali

    Po premoru:

    Kontrolna vprašanja

    1. Kaj je besedilni način in kako se razlikuje od običajnega?

    2. Kaj je okno?

    3. Kako premakniti kazalec na določene koordinate okna?

    4. Kako spremenim pisavo / barvo ozadja?

    Uvod

    Sodobne tehnične naprave, namenjene krmiljenju in avtomatizaciji, široko uporabljajo binarna vezja in binarni številski sistem. Teorija logične algebre se uporablja za analizo in sintezo kombinacijskih in zaporednih stikalnih vezij.

    Gradivo predavanja je predstavljeno v treh poglavjih. V prvem poglavju so podani osnovni pojmi teorije algebre logike, obravnavane so različne oblike predstavitve logičnih funkcij. Drugo poglavje je namenjeno vprašanjem minimiziranja predstavitev Booleovih funkcij, ki je osnova za abstraktno sintezo diskretnih naprav. Tretje poglavje vsebuje informacije o metodah izvajanja Booleovih funkcij, ki temeljijo na stikalnih vezjih, kar je osnova za strukturno sintezo diskretnih naprav.

    Pri pisanju zapiskov s predavanj je bila uporabljena naslednja literatura: za oddelek 1.1 -; za oddelek 1.2 -; za oddelek 1.3 -; za oddelek 2.1 -; za oddelek 2.2 -; za oddelke 3.1, 3.2 -.



    Povezani članki: