Primeri reševanja nalog z dvodimenzionalnimi nizi, naloge za samostojno reševanje. Podano dvodimenzionalno polje realnih števil Podano dvodimenzionalno polje

Podano je dvodimenzionalno polje 5x5. Organizirajte vnos elementov in izpis rezultatov v obliki oken. Po premoru spremenite barvo oken, v katerih so shranjeni elementi, določeni glede na stanje.

Možnosti naloge:

1.

2.

3.

4.

5.

6.

7.

8.

9.

10.

11. Poiščite produkt elementov, ki so nad glavno diagonalo. Zamenjajte vse lihe elemente z najdenim številom.

12. Poiščite vsoto elementov, ki so na lihih mestih (vsota indeksov (i+j) za X ij je liho število). Zamenjaj vse negativne elemente z najdenim številom.

13. Poiščite produkt vseh elementov, ki so na glavni diagonali. Zamenjajte vse elemente pete vrstice in drugega stolpca z najdenim številom.

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

15. Poiščite aritmetično sredino pozitivnih elementov, ki so nad glavno diagonalo. Zamenjaj vse negativne elemente z najdenim številom.

16. Poiščite vsoto lihih elementov. Zamenjajte z najdeno številko vse elemente, ki se nahajajo nad stransko diagonalo.

17. Poiščite zmnožek elementov i-vrstice in j-stolpca (i, j- najprej vnesite s tipkovnice). Zamenjaj vse elemente pod sekundarno diagonalo z najdenim številom.

18. Poiščite zmnožek elementov, ki so na sodih mestih (vsota indeksov (i+j) za X ij je liho število). Zamenjaj vse elemente na glavni diagonali z najdenim številom.

19. Poiščite aritmetično sredino lihih elementov. Zamenjaj vse elemente sekundarne diagonale z najdenim številom.

20. Poiščite vsoto vseh sodih elementov, ki so nad sekundarno diagonalo. Zamenjajte vse elemente četrte vrstice z najdeno številko.

21. Poiščite produkt elementov, ki so nad glavno diagonalo. Zamenjajte vse lihe elemente z najdenim številom.

22. Poiščite vsoto elementov, ki so na lihih mestih (vsota indeksov (i+j) za X ij je liho število). Zamenjaj vse negativne elemente z najdenim številom.

23. Poiščite produkt vseh elementov, ki so na glavni diagonali. Zamenjajte vse elemente pete vrstice in drugega stolpca z najdenim številom.

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

25. Poiščite aritmetično sredino pozitivnih elementov, ki so nad glavno diagonalo. Zamenjaj vse negativne elemente z najdenim številom.

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 načina?

2. Kaj je okno?

3. Kako premakniti kazalec na podane koordinate okna?

4. Kako spremeniti pisavo/barvo ozadja?

Uvod

Moderno tehnične naprave zasnovan za nadzor in avtomatizacijo, široko uporabo binarnih vezij in binarni sistem Obračun. Teorija logične algebre se uporablja za analizo in sintezo kombinacijskih in zaporednih stikalnih vezij.

Gradivo predavanj je predstavljeno v treh poglavjih. Prvo poglavje podaja osnovne koncepte teorije logične algebre in preučuje različne oblike predstavljanja Boolovih funkcij. Drugo poglavje je posvečeno vprašanju minimizacije predstavitev logičnih funkcij, ki je osnova za abstraktno sintezo diskretnih naprav. Tretje poglavje vsebuje informacije o metodah implementacije Boolovih funkcij na osnovi preklopnih vezij, kar je osnova za strukturno sintezo diskretnih naprav.

Pri pisanju zapiskov predavanj je bila uporabljena naslednja literatura: za poglavje 1.1 - ; za razdelek 1.2 – ; za razdelek 1.3 – ; za razdelek 2.1 – ; za razdelek 2.2 – ; za razdelke 3.1, 3.2 – .

Prišla je nova serija nalog računalništva za šolarje. Tokrat si bomo ogledali delo z dvodimenzionalnimi nizi v C++. Te težave so zelo zanimive. In večina mi je bila všeč.

Naloga št. 1

Poiščite indekse prvega pojava največjega elementa.
Vnosni format
Program kot vhod prejme velikosti niza n in m, nato pa n vrstic po m številk. n in m ne presegata 100.
Izhodni format
Natisnite dve števili: številko vrstice in številko stolpca, ki vsebuje največji element dvodimenzionalni niz. Če je takšnih elementov več, se izpiše tisti z manjšo številko vrstice, če pa sta številki vrstic enaki, se izpiše tisti z manjšo številko stolpca.

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

#vključi uporaba 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; }

Naloga št. 2

Podano je liho število n, ki ni večje od 15. Ustvarite dvodimenzionalno matriko n×n elementov in jo napolnite z "." (vsak element matrike je niz enega znaka). Nato izpolnite srednjo vrstico matrike, srednji stolpec matrike, glavno diagonalo in sekundarno diagonalo z znaki "*". Posledično mora "*" v matriki tvoriti sliko zvezdice. Prikažite nastalo matriko na zaslonu in elemente matrike ločite s presledki.

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

#vključi uporaba 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; }

Naloga št. 3

Podano je število n, ki ne presega 100. Ustvarite matriko velikosti n×n in jo izpolnite v skladu z naslednjim pravilom. Na glavni diagonali naj bodo številke 0. Na dveh diagonalah, ki mejijo na glavno diagonalo, številke 1. Na naslednjih dveh diagonalah številke 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 uporaba 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; }

Naloga št. 4

Dana je dvodimenzionalna matrika in dve števili: i in j. Zamenjajte stolpca z i in j v matriki.
Vnosni format
Program prejme kot vhod velikosti matrike n in m, ki ne presegata 100, nato elemente matrike, nato števili i in j.
Izhodni format
Natisnite rezultat.

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

#vključi #vključi uporaba 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 #5

Podano je število n, ki ne presega 10, in polje velikosti n × n. Preverite, ali je ta niz simetričen glede na glavno diagonalo. Natisnite besedo »DA«, če je polje simetrično, v nasprotnem primeru pa besedo »NE«.

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

#vključi #vključi uporaba 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 = res; 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 št. 6

Dana je kvadratna dvodimenzionalna matrika velikosti n × n in število k. Izpišite elemente k-te diagonale pod glavno diagonalo (tj. če je k = 1, morate izpisati elemente prve diagonale, ki ležijo pod glavno, če je k = 2, potem drugo diagonalo itd.).
Vrednost k je lahko negativna, na primer, če je k = −1, potem morate prikazati vrednost prve diagonale, ki leži nad glavno. Če je k = 0, morate izpisati elemente glavne diagonale.
Program prejme kot vhod število n, ki ne presega 10, nato matriko velikosti n × n in nato število k.

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

#vključi uporaba 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 izpis 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 št. 7

Podan je dvodimenzionalni niz velikosti n×m (n in m ne presegata 1000). Niz, ki je simetričen glede na glavno diagonalo, se imenuje transponiran na dano. Ima dimenzije m×n: vrstice prvotne matrike postanejo stolpci transponirane matrike, stolpci prvotne matrike postanejo vrstice transponirane matrike.
Glede na matriko sestavite transponirano matriko in jo prikažite na zaslonu.

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 uporaba 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 št. 8

V kinu je n vrst s po m sedeži (n in m ne presegata 20). V dvodimenzionalnem nizu so shranjeni podatki o prodanih vstopnicah, številka 1 pomeni, da je vstopnica za določen sedež že prodana, številka 0 pomeni, da je sedež prost. Prejeta je bila zahteva za prodajo k vstopnic za sosednje sedeže v isti vrsti. Ugotovite, ali je to zahtevo mogoče dokončati.
Vnosni format
Program kot vhod prejme števili n in m. Sledi n vrstic, ki vsebujejo m številk (0 ali 1), ločenih s presledki. Nato je podano število k.
Izhodni format
Program naj izpiše številko vrste, v kateri je k zaporednih praznih sedežev. Če je takih vrstic več, izpišimo številko najmanjše ustrezne vrstice. Če ni ustrezne vrstice, izpišite številko 0.

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

#vključi uporaba 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 št. 9

Podana je pravokotna matrika velikosti n×m. Zasukajte ga za 90 stopinj v smeri urinega kazalca in zapišite rezultat v novo matriko m×n.
Vnosni format
Vnesite dve števili n in m, ki ne presegata 100, nato pa niz velikosti n×m.
Izhodni format
Natisnite nastalo matriko. Številke pri izpisu 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 uporaba 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 št. 10

Glede na števili n in m napolnite dvodimenzionalni niz velikosti n×m s števili od 1 do n×m »kačo«, kot je prikazano v primeru.
Vnosni format
Vnesite dve števili n in m, od katerih vsako ne presega 20.
Izhodni format

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

#vključi uporaba 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 št. 11

Glede na števili n in m zapolnite dvodimenzionalni niz velikosti n×m s števili od 1 do n×m »diagonal«, kot je prikazano v primeru.
Vnosni format

Izhodni format
Izpišite nastalo matriko, pri čemer vsakemu elementu dodelite natančno 4 znake.

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

#vključi uporaba 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 number = 1; for ( int min_vrstica = 0; min_vrstica< n; min_row++) { if (min_row >0) začetna_vrstica = pos - 1; drugače začetna_vrstica = 0; za (pos = začetna_vrstica; pos< m; pos++) { row = min_row; for (int col = pos; col >= 0; col--) ( if (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 št. 12

Podani sta števili n in m. Izpolnite matriko n × m v vzorcu šahovnice: celice ene barve so zapolnjene z ničlami, celice druge barve pa z naravnimi števili od zgoraj navzdol, od leve proti desni. Številka 1 je zapisana v zgornjem levem kotu.
Vnosni format
Vnesite dve števili n in m, ki ne presegata 100.
Izhodni format
Izpišite nastalo matriko, pri čemer vsakemu elementu dodelite natančno 4 znake.

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

#vključi uporaba imenskega prostora std; int main() ( int n, m, sm; cin >> n >> m; int a[n][m]; // obdelava int število = 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 št. 13

Glede na števili n in m napolnite dvodimenzionalni niz velikosti n×m s števili od 1 do n×m v spirali, ki se začne v zgornjem levem kotu in se zasuka v smeri urinega kazalca, kot je prikazano v primeru.
Vnosni format
Vnesite dve števili n in m, ki ne presegata 100.
Izhodni format
Izpišite nastalo matriko, pri čemer vsakemu elementu dodelite natančno 4 znake.

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 uporaba 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

Za ogled omogočite JavaScript

Laboratorijske vaje za šole in univerze pri reševanju problemov obdelave dvodimenzionalnih nizov v jeziku C. Seznam laboratorijskih nalog (klik na povezavo vas usmeri na rešitev naloge, če je na voljo):

Dodatne naloge:

Delovanje vseh programov je bilo testirano 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 laboratorijsko delo lahko naročite tudi v C++ in mnogih drugih:

Št. 1: Podano dvodimenzionalno polje. Poiščite najmanjšo vsoto elementov niza. Rešite problem brez uporabe dodatnega enodimenzionalnega polja.

#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("Matrika %d x %d: \n", x, y);

Št. 2: Določite koordinate elementa, ki je najbližje povprečni vrednosti vseh elementov polja.

#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(time(NULL)); x = 1 + rand() % 10; y = 1 + rand() % 7; arr = (int*)malloc(x*y*sizeof(int)); printf("Matrika %d x %d: \n", x, y);

Št. 9: Dana je dvodimenzionalna matrika sodega števila stolpcev. Zamenjajte stolpce leve polovice polja s stolpci desne polovice.

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

Št. 14: Za vsako vrstico dvodimenzionalne matrike poiščite število elementov, katerih zadnja cifra je a.

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

Št. 21: Podan je dvodimenzionalni niz b. Če ga obravnavamo kot matriko, transponirajte b.

#vključi #vključi #vključi int main() ( int *arr, *arrT, x, y, i, j; srand(time(NULL)); x = 1 + rand() % 7; y = 1 + rand() % 7; arr = (int*)malloc(x*y*sizeof(int)); printf("Matrika %d x %d: \n", x, y);

Št. 1 (dodatno): podana je dvodimenzionalna matrika. Razvrstite njegove vrstice v nepadajoč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(time(NULL)); x = 1 + rand() % 10; y = 1 + rand() % 7; arr = (x*y*sizeof(int)); printf("Matrika %d: \n", x, y) max = j; k = 0; k

Št. 2 (dodatno): Ugotovite, ali je dana kvadratna matrika ortonormirana, tj. tisti, v katerem je skalarni produkt vsakega para različnih nizov enak 0, skalarni produkt vsakega niza s samim seboj pa 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 %d x %d: \n", x, x);

Št. 3 (dodatno): podana kvadratna dvodimenzionalna matrika. Poiščite vsoto elementov vsake njene diagonale, ki je vzporedna s sekundarno.

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

Problemi na dvodimenzionalnih nizih

1) Podano je dvodimenzionalno polje celih števil. Ustvarite program:

a) prikaz elementa, ki se nahaja v zgornjem desnem kotu matrike;

b) prikaz elementa, ki se nahaja v spodnjem levem kotu polja;

c) prikaz katerega koli elementa druge vrstice matrike;

d) prikaz katerega koli elementa tretjega stolpca matrike;

e) prikaz katerega koli elementa niza na zaslonu.

2) Podano je dvodimenzionalno polje celih števil. Zamenjaj:

a) elementi, ki se nahajajo v zgornjem desnem in spodnjem levem kotu;

b) elementi, ki se nahajajo v spodnjem desnem in zgornjem levem kotu;

3) Znana je številka premice, na kateri se nahaja element glavne diagonale dvodimenzionalnega niza celih števil. Prikažite vrednost tega elementa.

4) Prikaz (v eni vrstici):

a) vsi elementi glavne diagonale niza

b) vsi elementi glavne diagonale niza, začenši z elementom, ki se nahaja v spodnjem desnem kotu.

5) Zamenjajte vrednosti vseh elementov glavne diagonale niza celih števil z ničlo.

6) Zamenjajte vrednosti vseh elementov stranske diagonale niza celih števil z vrednostmi, ki so enake 100.

7) Določite:

a) vsota elementov glavne diagonale niza;

b) vsoto elementov sekundarne diagonale niza;

c) aritmetična sredina elementov glavne diagonale niza;

d) aritmetična sredina elementov sekundarne diagonale niza;

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

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

g) koordinate prvega največjega elementa glavne diagonale;

h) koordinate prvega minimalnega elementa glavne diagonale.

a) prikazati vse elemente pete vrstice matrike;

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

c) prikazati vse elemente s. stolpca matrike;

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

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

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

9) Podano je dvodimenzionalno polje celih števil. Ustvarite program:

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

b) vsota vseh elementov poljubne vrstice matrike;

10) Podano je dvodimenzionalno polje celih števil. Določite:

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

b) b) v kateri vrstici je zmnožek elementov večji, v drugi ali tretji.

11) Podana je dvodimenzionalna matrika celih števil velikosti 10 x 10. Prikaži del matrike:

a) nahaja se nad glavno diagonalo;



b) nahaja se pod glavno diagonalo;

c) nahaja se nad stransko diagonalo;

d) nahaja se pod stransko diagonalo;

12) Podano je dvodimenzionalno polje celih števil:

a) v vsakem od njegovih stolpcev poiščite največji (najmanjši) element;

b) koordinate največjega (minimalnega) elementa;

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

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

e) poišči premico z največjo vsoto elementov;

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

  • izobraževalni: spodbujati oblikovanje ideje o dvodimenzionalnem nizu in osnovnih lastnostih kvadratnih matrik; razmislite o dejanjih, ki jih je mogoče izvesti na matricah; uvesti standardne algoritme za obdelavo matrik v Pascalu; ustvariti pogoje za razvijanje sposobnosti reševanja algoritmov z dvodimenzionalnimi nizi;
  • razvoj:
  • ustvariti pogoje za razvoj sposobnosti za delo v omejenem časovnem obdobju, razvoj sposobnosti samostojnega dela in razvoj sposobnosti zapisovanja.
  • izobraževalni:
  • spodbujati ustvarjanje psihološkega udobja za delo v razredu, razvoj zbranosti, odgovornega odnosa do dela in povečati motivacijo za izobraževalne dejavnosti.

Vrsta lekcije: kombinirana.

Metode poučevanja in učenja: predavanje, samostojno delo.

Oblike organizacije: frontalno delo, individualno delo.

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

Med predavanji:

1. Organizacijski trenutek.

Pozdravi.
Tema je prijavljena.
Določite cilje in cilje lekcije.

2. Posodabljanje pridobljenega znanja

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

3. Postavitev ciljev, postavitev nalog:

  • definirati pojem dvodimenzionalne matrike;
  • razmislite o obliki zapisa dvodimenzionalne matrike
  • upoštevati osnovne lastnosti kvadratnih matrik;
  • razmislite o dejanjih, ki jih je mogoče izvesti na matricah;
  • se seznanijo s tipičnimi algoritmi za obdelavo matrik v Pascalu;
  • ustvariti pogoje za razvijanje sposobnosti reševanja algoritmov z dvodimenzionalnimi nizi;
  • 4. Predavanje

    Opredelitev.

    Dvodimenzionalni niz je zbirka podatkov, v kateri je vsaka vrednost odvisna od dveh števil, ki si ju lahko predstavljamo kot indeks stolpca v matriki.

    Format snemanja

    <имя>: niz[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 pa številki stolpca. Na primer:

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

    Pri inicializaciji dvodimenzionalnih nizov je vsaka vrstica zaprta z dodatnim parom oklepajev:

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

    Analog pascalovih nizov v matematiki so matrike. Matriko, v kateri je število vrstic enako številu stolpcev, imenujemo kvadrat. 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 diagonala pa vsebuje elemente 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č, se imenuje diagonalna matrika

    3. Diagonalna matrika, v kateri so vsi elementi na glavni diagonali enaki 1, se imenuje identitetna matrika

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

    Osnovne operacije, ki jih lahko izvajamo na matricah

    • povzeti;
    • poišči razliko;
    • produkt matrike z določenim številom;
    • produkt dveh matrik.

    Tipični algoritmi za obdelavo matrik v Pascalu

    1. Izpis matrike v obliki tabele:
    2. za i:= 1 do n naredi
      začeti
      za j:= 1 do m naredi
      napiši(a:4);
      writeln
      konec;

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

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

    7. Seštevek matrik:
    8. za i:= 1 do n naredi
      začeti
      za j:= 1 do m naredi
      c:=a+ b
      konec;

    9. Transponiranje matrike je zrcalna slika njenih elementov glede na glavno diagonalo. To lahko storite tako, da uvedete novo matriko:

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

    5. Primarni nadzor

    »Orisni zemljevid« 2 možnosti

    1 možnost

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

      ... ... dvodimenzionalnih nizov je vsaka vrstica v dodatnem paru oklepajev:

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

    3. Dopolnite manjkajoče definicije:
    4. Glavne operacije, ki jih lahko izvajamo na matrikah, so: seštevek, zmnožek dveh matrik,….,….

    5. Dopolnite manjkajoče definicije:
    6. Matrika, katere število vrstic je enako številu stolpcev, se imenuje .... ….. .

    7. Poiščite napake v algoritmu:

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

    Možnost 2

    1. Popravite netočnosti v opisu polja:

    konst
    n=4; m=3;
    vrsto
    mas:matrika celih števil;

    1. Dopolnite manjkajoče definicije:
    2. ...... je zbirka podatkov, katerih vsaka vrednost je odvisna od dveh števil, ki ju lahko obravnavamo kot indeks stolpca v matriki.

    3. Dopolnite manjkajoče definicije:
    4. Diagonalna matrika, v kateri so vsi elementi na glavni diagonali enaki ..., se imenuje identitetna matrika

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

    7. Poiščite napake v algoritmu:

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

    Katero tipično nalogo opravlja algoritem?

    Algoritmi v jeziku Pascal

    1. Napišite program, ki za celoštevilsko matriko 3x4 določi aritmetično sredino njenih elementov in število pozitivnih elementov v vsaki vrstici. Dodatek 2
    2. program povprečje_n;
      konst m=3;
      n = 4;
      var

      i,j,n_pos_el:celo število;
      srednje: resnično;
      začeti
      za i:=1 do m do
      za j:=1 do n do read(a);
      sred:=0;
      za i:=1 do m se začne
      n_pos_el:=0;
      za j:=1 do n začnite
      sred:=sred+a;
      če je a>0, potem inc(n_pos_el);
      konec;
      writeln("V",i,"-oi stroke",n_pos_el,"polozitelnih elementov");
      konec;
      sred:=sred/m/n;
      writeln("Srednee arifmeticheskoe:",sred:6:2);
      konec.

    3. Napišite program, ki za pravokotno celoštevilsko matriko 3x4 določi številko skrajno levega stolpca, ki vsebuje samo pozitivne elemente. Če takega stolpca ni, se prikaže sporočilo. Dodatek 3

    program num_posit;
    konst m=3;
    n=4;
    var
    a: niz celih števil;
    i,j,num:celo število;
    all_posit:boolean;
    začeti
    randomizirati;
    za i:=1 do m do
    začeti
    za j:=1 do n naredi
    začeti
    a:=naključno(100)-10;
    napiši(a:4);
    konec;
    writeln;
    konec;
    št.:=0;
    za j:=1 do n začnite
    all_posit:=true;
    za i:=1 do m do
    če< 0 then
    začeti
    all_posit:=false;
    odmor; konec;
    če all_posit potem začni
    št.:=j; odmor; konec;
    konec;
    če je num = 0 potem
    writeln("Takix stolbcov net")
    drugače
    writeln("Številski stolpec:",število);
    konec.

    Učenci naložijo datoteke v Pascalu, analizirajo te algoritme, si ogledajo rezultate izvajanja programa in odgovorijo na dodatna vprašanja:

    1. Kako je organiziran dvodimenzionalni niz?
    2. Kaj pomeni postopek inc?
    3. Kaj pomeni postopek prekinitve?
    4. Kako se uporablja generator naključnih števil?

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

    Samostojno reševanje nalog na posameznih karticah v algoritemskem okolju.

    Primeri nalog:

    1. Dana je 5x5 matrika A, ki vsebuje naključne elemente. Poiščite vsoto vseh elementov matrike.
    2. Prikažite Pitagorejsko tabelo.
    3. Poiščite vsoto pozitivnih elementov podanega stolpca matrike A 5x5 celih števil.

    7. Povzetek lekcije, domača naloga.

    Povzemanje. Ocena stopnje asimilacije.

    D/Z povzetek, naloge:

    Za vse:

    1. Podan je dvodimenzionalni kvadratni niz. Poiščite število vrstic, katerih vsi elementi so enaki nič.
    2. Podan je dvodimenzionalni kvadratni niz. Poiščite številke vrstic, od katerih so elementi v vsaki enaki.
    3. Določite najmanjši element dvodimenzionalne matrike. Izpišite številko vrstice, ki vsebuje največje število minimalnih elementov, če obstajajo.
    4. Podan je dvodimenzionalni niz. Poiščite vrstico z največjo vsoto elementov in najmanjšo. Prikaži najdene nize in vsote njihovih elementov.

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

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

    Primeri nalog:

    1. Podan je dvodimenzionalni niz. Pretvorite ga po naslednjem pravilu: vrstico s številko N naredite v stolpec s številko N, stolpec pa v vrstico.
    2. V dvodimenzionalnem nizu X so vsa števila različna. V vsaki vrstici je izbran najmanjši element, nato pa je med temi številkami izbran največji. Natisnite številko vrstice polja X, v kateri se nahaja izbrano število.
    3. Podan je dvodimenzionalni niz. Poiščite največjo vrednost elementov prve in zadnje vrstice.
    4. Napišite program, ki s tipkovnice prikaže dvodimenzionalno matriko vrstico za vrstico in izračuna vsoto njenih elementov v stolpcih.
    5. Napišite program, ki izračuna vsoto diagonalnih elementov kvadratne matrike.