Jepet një grup dydimensional i numrave realë. Shembuj të zgjidhjes së problemeve me grupe dydimensionale, detyra për zgjidhje të pavarur Jepet një grup dydimensional i numrave të plotë

Pjesa tjetër e detyrave të shkencave kompjuterike për nxënësit e shkollës mbërriti me kohë. Këtë herë, le të shohim punën me vargje dy-dimensionale në C++. Këto detyra janë mjaft interesante. Dhe më pëlqeu shumica prej tyre.

Detyra numër 1

Gjeni indekset e shfaqjes së parë të elementit maksimal.
Formati i të dhënave hyrëse
Programi merr madhësitë e grupeve n dhe m si hyrje, pastaj n rreshta me m numra secila. n dhe m nuk i kalojnë 100.
Formati i daljes
Shtypni dy numra: numrin e rreshtit dhe numrin e kolonës që përmban elementin më të madh në grup dydimensional. Nëse ka disa elementë të tillë, atëherë shfaqet ai me numrin e rreshtit të poshtëm, dhe nëse numrat e rreshtave janë të barabartë, atëherë ai me numrin e kolonës së poshtme.

të dhëna të mostrës: 3 4 0 3 2 4 2 3 5 5 5 1 2 3 prodhimi i mostrës: 1 2

#përfshi duke përdorur hapësirën e emrave std; int main() ( int n, m; cin >> n >> m; int a; // lexim për (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; për (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; }

Detyra numër 2

Jepet një numër tek n, jo më i madh se 15. Krijo një grup dydimensional të elementeve n×n, duke e mbushur me "." (çdo element i grupit është një varg me një karakter). Më pas plotësoni me karaktere "*" rreshtin e mesëm të grupit, kolonën e mesme të grupit, diagonalen kryesore dhe diagonalen dytësore. Si rezultat, "*" në grup duhet të formojë një imazh yll. Shfaqni grupin që rezulton në ekran, duke i ndarë elementet e grupit me hapësira.

të dhëna të mostrës: 5 prodhimi i mostrës: * . * . * . * * * . * * * * * . * * * . * . * . *

#përfshi duke përdorur hapësirën e emrave 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; }

Detyra numër 3

Jepet një numër n jo më i madh se 100. Krijoni një grup n×n dhe plotësoni atë sipas rregullit të mëposhtëm. Në diagonalen kryesore duhet të shkruhen numrat 0. Në dy diagonalet ngjitur me kryesoren, numrat 1. Në dy diagonalet e ardhshme, numrat 2, e kështu me radhë.

të dhëna të mostrës: 5 prodhimi i mostrës: 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

#përfshi #përfshi duke përdorur hapësirën e emrave std; int main() ( int n; cin >> n; int a; // përpunim për (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; }

Detyra numër 4

Jepet një grup dydimensional dhe dy numra: i dhe j. Ndërroni kolonat me numrat i dhe j në grup.
Formati i të dhënave hyrëse
Programi merr si hyrje madhësitë e grupit n dhe m, jo ​​më shumë se 100, pastaj elementet e grupit, pastaj numrat i dhe j.
Formati i daljes
Nxjerr rezultatin.

të dhëna të mostrës: 0 1 prodhimi i mostrës: 12 11 13 14 22 21 23 24 32 31 33 34

#përfshi #përfshi duke përdorur hapësirën e emrave 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; // përpunimi për (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; }

Detyra numër 5

Ju jepet një numër n që nuk kalon 10 dhe një grup me madhësi n × n. Kontrolloni nëse ky grup është simetrik me diagonalen kryesore. Shtypni fjalën "PO" nëse grupi është simetrik, dhe fjalën "JO" ndryshe.

të dhëna të mostrës: 3 0 1 2 1 2 3 2 3 4 prodhimi i mostrës: PO

#përfshi #përfshi duke përdorur hapësirën e emrave std; int main() ( int n; bool simetrik; cin >> n; int a; // mbushje për (int i = 0; i< n; i++) { for (int j = 0; j < n; j++) { cin >> a[i][j]; ) ) // përpunim simetrik = i vërtetë; për (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; }

Detyra numër 6

Jepet një grup dydimensional katror me madhësi n × n dhe një numër k. Shtypni elementet e diagonales k-të nën diagonalen kryesore (d.m.th. nëse k = 1, atëherë duhet të printoni elementet e diagonales së parë poshtë asaj kryesore, nëse k = 2, atëherë diagonalja e dytë, etj.).
Vlera e k mund të jetë negative, për shembull, nëse k = -1, atëherë duhet të printoni vlerën e diagonales së parë që shtrihet mbi atë kryesore. Nëse k = 0, atëherë duhet të printoni elementet e diagonales kryesore.
Programi merr si hyrje një numër n që nuk e kalon 10, pastaj një grup n × n, pastaj një numër k.

Shembulli i hyrjes 1: 4 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 1 Shembulli i prodhimit 1: 5 1 6 Shembulli i hyrjes 2: 4 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 -2 Shembulli i prodhimit 2: 3 8

#përfshi duke përdorur hapësirën e emrave std; int main() ( int n, k; cin >> n; int a[n][n]; // mbushje për (int i = 0; i< n; i++) { for (int j = 0; j < n; j++) { cin >> a[i][j]; ) cin >> k; // përpunimi dhe prodhimi për (int i = 0; i< n; i++) { for (int j = 0; j < n; j++) { if (i - j - k == 0) cout << a[i][j] << " "; } } return 0; }

Detyra numër 7

Jepet një grup dydimensional me madhësi n×m (n dhe m nuk i kalojnë 1000). Një grup që është simetrik me të në lidhje me diagonalen kryesore quhet i transpozuar në atë të dhënë. Ka përmasa m×n: rreshtat e grupit origjinal bëhen kolona të të transpozuarit, kolonat e grupit origjinal bëhen rreshtat e atij të transpozuar.
Për grupin e dhënë, ndërtoni grupin e transpozuar dhe shfaqeni atë në ekran.

të dhëna të mostrës: 3 4 11 12 13 14 21 22 23 24 31 32 33 34 prodhimi i mostrës: 11 21 31 12 22 32 13 23 33 14 24 34

#përfshi duke përdorur hapësirën e emrave 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; }

Detyra numër 8

Kinemaja ka n rreshta me m ndenjëse secila (n dhe m nuk i kalojnë 20). Grupi dydimensional ruan informacione për biletat e shitura, numri 1 do të thotë që bileta për këtë vend tashmë është shitur, numri 0 do të thotë se vendi është i lirë. Është marrë një kërkesë për shitjen e k biletave për vendet fqinje në të njëjtin rresht. Përcaktoni nëse një kërkesë e tillë mund të përmbushet.
Formati i të dhënave hyrëse
Programi merr numrat n dhe m si hyrje. Pastaj ka n rreshta që përmbajnë m numra (0 ose 1) të ndara me hapësira. Pastaj jepet numri k.
Formati i daljes
Programi duhet të nxjerrë numrin e një rreshti që ka k vende të njëpasnjëshme bosh. Nëse ka disa rreshta të tillë, atëherë shtypni numrin e rreshtit më të vogël të përshtatshëm. Nëse nuk ka rresht të përshtatshëm, shtypni numrin 0.

të dhëna të mostrës: 3 4 0 1 0 1 1 0 0 1 1 1 1 1 2 prodhimi i mostrës: 2

#përfshi duke përdorur hapësirën e emrave std; int main() ( int n, m, k, r = 0; cin >> n >> m; int a[n][m]; // mbushje për (int i = 0; i< n; i++) { for (int j = 0; j < m; j++) { cin >> a[i][j]; ) cin >> k; // përpunimi për (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; }

Detyra numër 9

Jepet një grup drejtkëndor me madhësi n×m. Rrotulloni atë 90 gradë në drejtim të akrepave të orës, duke shkruar rezultatin në një grup të ri m×n.
Formati i të dhënave hyrëse
Futen dy numra n dhe m, jo ​​më shumë se 100, pastaj një grup me madhësi n×m.
Formati i daljes
Nxjerr grupin që rezulton. Ndani numrat me një hapësirë ​​të vetme.

të dhëna të mostrës: 3 4 11 12 13 14 21 22 23 24 31 32 33 34 prodhimi i mostrës: 31 21 11 32 22 12 33 23 13 34 24 14

#përfshi duke përdorur hapësirën e emrave std; int main() ( int n, m; cin >> n >> m; int a[n][m]; int b[m][n]; // mbushje për (int i = 0; i< n; i++) { for (int j = 0; j < m; j++) { cin >> a[i][j]; ) ) // përpunim për (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; }

Detyra numër 10

Duke pasur parasysh numrat n dhe m, plotësoni një grup dydimensional me madhësi n×m me numra nga 1 në n×m me një "gjarpër", siç tregohet në shembull.
Formati i të dhënave hyrëse
Futen dy numra n dhe m, secili prej të cilëve nuk kalon 20.
Formati i daljes

të dhëna të mostrës: 3 5 prodhimi i mostrës: 1 2 3 4 5 10 9 8 7 6 11 12 13 14 15

#përfshi duke përdorur hapësirën e emrave std; int main() ( int n, m, c = 0; cin >> n >> m; int a[n][m]; // përpunim për (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; }

Detyra numër 11

Duke pasur parasysh numrat n dhe m, plotësoni një grup dydimensional n×m me numra nga 1 deri në n×m "diagonale" siç tregohet në shembull.
Formati i të dhënave hyrëse

Formati i daljes
Nxjerr grupin që rezulton, duke lënë saktësisht 4 karaktere për secilin element.

të dhëna të mostrës: 3 5 prodhimi i mostrës: 1 2 4 7 10 3 5 8 11 13 6 9 12 14 15

#përfshi duke përdorur hapësirën e emrave std; int main() ( int n, m, pos = 0, row = 0; cin >> n >> m; int a[n][m]; // përpunimi int start_row = 0; int numri = 1; për ( int min_rresht = 0;min_rresht< n; min_row++) { if (min_row >0) rresht_fillimi = pos - 1; tjetër rresht_fillimi = 0; për (pos = rresht_fillimi; pos< m; pos++) { row = min_row; for (int col = pos; col >= 0; kolon--) (nëse (rresht< 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; }

Detyra numër 12

Janë dhënë numrat n dhe m. Plotësoni një grup n × m në një model shahu: qelizat e njërës ngjyrë janë të mbushura me zero dhe qelizat e ngjyrës tjetër janë të mbushura me numra natyrorë nga lart poshtë, nga e majta në të djathtë. Numri 1 është shkruar në këndin e sipërm të majtë.
Formati i të dhënave hyrëse
Futen dy numra n dhe m, jo ​​më shumë se 100.
Formati i daljes
Nxjerr grupin që rezulton, duke lënë saktësisht 4 karaktere për secilin element.

të dhëna të mostrës: 3 5 prodhimi i mostrës: 1 0 2 0 3 0 4 0 5 0 6 0 7 0 8

#përfshi duke përdorur hapësirën e emrave std; int main() ( int n, m, sm; cin >> n >> m; int a[n][m]; // përpunimi int numri = 1; për (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; }

Detyra numër 13

Duke pasur parasysh numrat n dhe m, mbushni një grup dydimensional me madhësi n×m me numra nga 1 në n×m në një spirale duke filluar nga këndi i sipërm i majtë dhe duke u rrotulluar në drejtim të akrepave të orës, siç tregohet në shembull.
Formati i të dhënave hyrëse
Futen dy numra n dhe m, jo ​​më shumë se 100.
Formati i daljes
Nxjerr grupin që rezulton, duke lënë saktësisht 4 karaktere për secilin element.

të dhëna të mostrës: 4 5 prodhimi i mostrës: 1 2 3 4 5 14 15 16 17 6 13 20 19 18 7 12 11 10 9 8

#përfshi duke përdorur hapësirën e emrave std; int main() ( int n, m; cin >> n >> m; int a; për (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

Ju lutemi aktivizoni JavaScript për të parë
  • arsimore: të kontribuojë në formimin e një ideje të një grupi dydimensional dhe vetitë themelore të matricave katrore; konsideroni veprimet që mund të kryhen në matrica; prezantoni algoritme tipike për përpunimin e matricave në Pascal; të krijojë kushte për formimin e aftësisë për të zgjidhur algoritme me vargje dydimensionale;
  • duke zhvilluar:
  • krijojnë kushte për zhvillimin e aftësive për të punuar për një periudhë të kufizuar kohore, zhvillimin e aftësive të punës së pavarur, zhvillimin e aftësive për të punuar me shënime.
  • arsimore:
  • për të nxitur krijimin e rehatisë psikologjike për punën në mësim, edukimin e qetësisë, një qëndrim të përgjegjshëm ndaj punës së dikujt dhe një rritje të motivimit për aktivitete edukative.

Lloji i mësimit: i kombinuar.

Metodat e mësimdhënies: ligjërata, punë e pavarur.

Format e organizimit: punë frontale, punë individuale.

Pajisjet: detyra për punë në klasë (karta individuale, detyrë në kompjuter), shënime në tabelë.

Gjatë orëve të mësimit:

1. Momenti organizativ.

pershendetje.
Subjekti i raportuar.
Vendosni qëllimin e mësimit dhe detyrat.

2. Aktualizimi i njohurive të marra

Pikat kryesore të temës së mëparshme fliten gojarisht: “Vargjet njëdimensionale”. Mini sondazh frontal mbi përkufizimet kryesore.

3. Vendosja e qëllimeve, vendosja e detyrave:

  • të përkufizojë konceptin e një grupi dydimensional;
  • merrni parasysh shënimin e një grupi dydimensional
  • konsideroni vetitë themelore të matricave katrore;
  • konsideroni veprimet që mund të kryhen në matrica;
  • të njihen me algoritme tipike për përpunimin e matricave në Pascal;
  • të krijojë kushte për formimin e aftësisë për të zgjidhur algoritme me vargje dydimensionale;
  • 4. Ligjërata

    Përkufizimi.

    Një grup dydimensional është një koleksion të dhënash, secila vlerë e të cilave varet nga dy numra, të cilët mund të konsiderohen si indeks i një kolone në një matricë.

    Formati i regjistrimit

    <имя>: varg[n_index_1..te_index_1, n_index_2 ..to_index_2] e <тип>

    A: grup i numrave të plotë;

    Për të përdorur një element të një grupi, duhet të specifikoni emrin e grupit dhe indeksin e elementit. Indeksi i parë korrespondon me numrin e rreshtit, i dyti me numrin e kolonës. Për shembull:

    për i:=1 deri në n bëj
    për j:=1 deri në n bëj
    a:= rastit (100);

    Kur inicializon vargjet dydimensionale, çdo rresht mbyllet në një palë kllapa shtesë:

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

    Një analog i vargjeve Pascal në matematikë janë matricat. Një matricë në të cilën numri i rreshtave është i barabartë me numrin e kolonave quhet matricë katrore. A(n,n) – matricë katrore

    Karakteristikat kryesore të matricave katrore:

    1. Matricat katrore kanë diagonale kryesore dhe anësore. Për shembull, për matricën A, elementët 1.5 dhe 9 shtrihen në diagonalen kryesore, dhe 3, 5 dhe 7 shtrihen në diagonalen anësore.

    i=j – elementet ndodhen në diagonalen kryesore;
    i> j - elementet ndodhen poshtë diagonales kryesore;
    i i?j - elementët janë të vendosur në diagonalen kryesore dhe poshtë;
    i+j= n+1– elementet ndodhen në diagonale dytësore;
    i+j< n+1– элементы расположены над побочной диагональю;
    i+j> n+1 – elementet ndodhen nën diagonalen dytësore;

    2. Një matricë katrore në të cilën të gjithë elementët, duke përjashtuar elementët e diagonales kryesore, janë të barabartë me zero, quhet matricë diagonale

    3. Quhet një matricë diagonale në të cilën të gjithë elementët në diagonalen kryesore janë të barabartë me 1 matrica e identitetit

    4. Nëse në matricën A (m, n) ndërrohen rreshtat dhe kolonat, atëherë do të fitohet matrica A t (m, n), e cila quhet matricë e transpozuar.

    Veprimet bazë që mund të kryhen në matrica

    • përmbledh;
    • gjeni dallimin
    • prodhimi i një matrice me një numër;
    • produkt i dy matricave.

    Algoritme tipike të përpunimit të matricës në Pascal

    1. Prodhimi i matricës në formën e një tabele:
    2. për i:= 1 deri në n bëj
      fillojnë
      për j:= 1 deri në m bëj
      shkruani(a:4);
      shkruarn
      fundi;

    3. Përdorimi i një gjeneruesi të numrave të rastësishëm:
    4. randomizoj;
      për i:=1 deri në m bëj
      fillojnë
      për j:=1 deri në n bëj
      fillojnë
      a:= rastit (100)-10;
      shkruani(a:4);
      fundi;
      shkruarn;
      fundi;

    5. Mënyra e dytë për të shfaqur matricën në formën e një tabele:
    6. për i:= 1 deri në n bëj
      për j:= 1 deri në m bëj
      nëse j>m atëherë shkruani (a:4)
      tjetër shkruani(a:4);

    7. Përmbledhja e matricës:
    8. për i:= 1 deri në n bëj
      fillojnë
      për j:= 1 deri në m bëj
      c:=a+b
      fundi;

    9. Transpozimi i një matrice është një imazh pasqyrë i elementeve të saj në lidhje me diagonalen kryesore. Ju mund ta bëni këtë duke prezantuar një grup të ri:

    për i:= 1 deri në n bëj
    për j:= 1 deri në n bëj
    b=a;

    5. Kontrolli primar

    "Harta e konturit" 2 opsione

    1 opsion

    1. Korrigjoni pasaktësitë në përshkrimin e një grupi dydimensional:
    2. Var
      A= grup i numrave të plotë;

      ... ... grupe dydimensionale, çdo rresht është i mbyllur në një palë kllapa shtesë:

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

    3. Fut përkufizimet që mungojnë:
    4. Veprimet bazë që mund të kryhen në matrica: shuma, prodhimi i dy matricave,….,….

    5. Fut përkufizimet që mungojnë:
    6. Një matricë në të cilën numri i rreshtave është i barabartë me numrin e kolonave quhet .... ….. .

    7. Gjeni gabimet në algoritëm:

    për i:= 1 deri në n bëj
    fillojnë
    për j:= 1 deri në m bëj
    c:=a+a
    fundi;

    Opsioni 2

    1. Korrigjoni pasaktësitë në përshkrimin e grupit:

    konst
    n=4; m=3;
    lloji
    mas: grup i numrave të plotë;

    1. Fut përkufizimet që mungojnë:
    2. …… është një grup të dhënash, secila vlerë e të cilave varet nga dy numra, të cilët mund të konsiderohen si indeks i një kolone në një matricë.

    3. Fut përkufizimet që mungojnë:
    4. Quhet një matricë diagonale në të cilën të gjithë elementët në diagonalen kryesore janë të barabarta me ... matrica e identitetit

    5. Fut përkufizimet që mungojnë:
    6. Një matricë katrore në të cilën të gjithë elementët, duke përjashtuar elementët e diagonales kryesore, janë të barabartë me zero, quhet … … .

    7. Gjeni gabimet në algoritëm:

    randomizoj;
    për i:=1 deri në m bëj
    fillojnë
    për j:=1 deri në n bëj
    fillojnë
    a:= rastit (100)-10;
    fundi;
    fundi;

    Cila është detyra tipike e algoritmit?

    Algoritmet në Pascal

    1. Shkruani një program që, për një matricë me numra të plotë 3x4, të përcaktojë mesataren aritmetike të elementeve të saj dhe numrin e elementeve pozitive në çdo rresht. Shtojca 2
    2. program medium_n;
      konst m=3;
      n=4;
      var

      i,j,n_pos_el:integer;
      sred:real;
      fillojnë
      për i:=1 deri në m bëj
      për j:=1 deri në n lexo (a);
      mesi:=0;
      sepse i:=1 deri në m duhet të fillojë
      n_pos_el:=0;
      sepse j:=1 deri në n filloni
      sred:=sred+a;
      nëse a>0 atëherë inc(n_pos_el);
      fundi;
      writeln("V",i,"-oi stroke",n_pos_el,"polozitelnix elementov");
      fundi;
      sred:=sred/m/n;
      writeln("Srednee arithmeticheskoe:",sred:6:2);
      fund.

    3. Shkruani një program që, duke pasur parasysh një matricë drejtkëndëshe me numra të plotë 3x4, të përcaktojë numrin e kolonës më të majtë që përmban vetëm elemente pozitive. Nëse nuk ka një kolonë të tillë, shfaqet një mesazh. Shtojca 3

    numri_pozit i programit;
    konst m=3;
    n=4;
    var
    a: grup numrash të plotë;
    i,j,num:integer;
    all_posit:boolean;
    fillojnë
    randomizoj;
    për i:=1 deri në m bëj
    fillojnë
    për j:=1 deri në n bëj
    fillojnë
    a:= rastit (100)-10;
    shkruani(a:4);
    fundi;
    shkruarn;
    fundi;
    num:=0;
    sepse j:=1 deri në n filloni
    all_posit:=vërtetë;
    për i:=1 deri në m bëj
    nese nje< 0 then
    fillojnë
    all_posit:=false;
    pushim; fundi;
    nëse all_posit atëherë filloni
    num:=j; pushim; fundi;
    fundi;
    nëse num = 0 atëherë
    writeln ("Takix stolbcov net")
    tjetër
    writeln("Kollona e numrit:",num);
    fund.

    Studentët ngarkojnë skedarë në Pascal, analizojnë këtë algoritëm, shikojnë rezultatet e ekzekutimit të programit, u përgjigjen pyetjeve shtesë:

    1. Si organizohet një grup dydimensional?
    2. Çfarë do të thotë procedura inc?
    3. Çfarë do të thotë procedura e pushimit?
    4. Si përdoret gjeneruesi i numrave të rastësishëm?

    6. Formimi i aftësive për zgjidhjen e problemeve.

    Zgjidhja e problemeve në kartat individuale në mënyrë të pavarur, në një mjedis algoritmik.

    Shembuj detyrash:

    1. Jepet një matricë 5x5 A që përmban elementë të rastësishëm. Gjeni shumën e të gjithë elementëve të matricës.
    2. Shfaq tabelën e Pitagorës.
    3. Gjeni shumën e elementeve pozitive të kolonës së caktuar të matricës A 5x5 numra të plotë.

    7. Rezultatet e orës së mësimit, vendosja e detyrave të shtëpisë.

    Duke përmbledhur. Vlerësimi i nivelit të asimilimit.

    Abstrakt D/Z, detyra:

    Per te gjithe:

    1. Jepet një grup dydimensional katror. Gjeni numrat e rreshtave, të gjithë elementët e të cilëve janë të barabartë me zero.
    2. Jepet një grup dydimensional katror. Gjeni numrat e rreshtave, elementet në secilën prej të cilave janë të njëjta.
    3. Përcaktoni elementin minimal të një grupi dydimensional. Shtypni numrin e rreshtit që përmban numrin maksimal të elementeve minimale, nëse ka.
    4. Jepet një grup dydimensional. Gjeni drejtëzën me shumën më të madhe të elementeve dhe më të voglin. Paraqitni vargjet e gjetura dhe shumat e elementeve të tyre.

    Për studentët që kanë një ide rreth grupeve dydimensionale dhe si t'i zgjidhin ato:

    Në vend të një leksioni - zgjidhja e problemeve me kompleksitet të shtuar.

    Shembuj detyrash:

    1. Jepet një grup dydimensional. Shndërroni atë sipas rregullit të mëposhtëm: bëni rreshtin me numrin N kolonë me numër N dhe kolonën rresht.
    2. Në një grup dydimensional X, të gjithë numrat janë të ndryshëm. Në çdo rresht, zgjidhet elementi minimal, pastaj zgjidhet maksimumi midis këtyre numrave. Shtypni numrin e rreshtit të grupit X që përmban numrin e zgjedhur.
    3. Jepet një grup dydimensional. Gjeni vlerën më të madhe të elementeve të rreshtit të parë dhe të fundit.
    4. Shkruani një program që printon një grup dydimensional rresht pas rreshti nga tastiera dhe llogarit shumën e elementeve të tij sipas kolonave.
    5. Shkruani një program që njehson shumën e elementeve diagonale të një matrice katrore.

    Punë laboratori për shkollat ​​dhe universitetet për zgjidhjen e problemeve të përpunimit të vargjeve dydimensionale në C (C). Lista e detyrave të punës laboratorike (kliko në lidhjen që drejton për zgjidhjen e problemit, nëse ka):

    Detyra shtesë:

    Të gjitha programet janë testuar në CodeBlocks 16.01 (MinGW, Windows 10). Ju mund t'i jepni zgjidhjet tuaja programeve të pazgjidhura dhe sugjerimet për përmirësimin e atyre ekzistuese në komentet në fund të faqes.

    Shkarkoni skedarin e laboratorit dhe të gjitha kodet burimore të programeve në arkiv:


    Ju gjithashtu mund të porosisni zgjidhje për laboratorët tuaj në C++ dhe shumë të tjera:

    #1: Jepet një grup dy-dimensionale. Gjeni shumën minimale të elementeve të një vargu. Zgjidheni problemin pa përdorur një grup shtesë njëdimensional.

    #përfshi #përfshi #përfshi int main() ( int *arr; int x, y, i, j, shuma = 0, min = 0, minstr = 0; srand(koha(NULL)); x = 2 + rand() % 10; y = 2 + rand() % 6; arr = (int*)malloc(x*y*madhësia e(int));printf("Array %dx %d: \n", x, y);for (i = 0; i

    #2: Përcaktoni koordinatat e elementit më afër vlerës mesatare të të gjithë elementëve të grupit.

    #përfshi #përfshi #përfshi #përfshi int main() ( int *arr; int x, y, i, j, minx = 0, miny = 0; float ssum = 0; srand(koha(NULL)); x = 1 + rand() % 10; y = 1 + rand() % 7; arr = (int*)malloc(x*y*sizeof(int)); printf("Array %dx %d: \n", x, y); për (i = 0 i

    #9: Jepet një grup dydimensional me një numër çift kolonash. Ndërroni kolonat e gjysmës së majtë të grupit me kolonat e gjysmës së djathtë.

    #përfshi #përfshi #përfshi int main() ( int *arr; int x, y, i, j, d; srand(koha(NULL)); x = 1 + rand() % 10; y = 2 * (1 + rand() % 3 ); arr = (int*)malloc(x*y*madhësia e(int)); printf("Array %dx %d: \n", x, y); për (i = 0; i

    #14: Për çdo rresht të një grupi dydimensional, gjeni numrin e elementeve, shifra e fundit e të cilëve është e barabartë me a.

    #përfshi #përfshi #përfshi int main() ( int *arr; int x, y, i, j, a, count; srand(time(NULL)); printf("Fut një: "); scanf("%d", &a); x = 1 + rand() % 10; y = 1 + rand() % 7; arr = (int*)malloc(x*y*madhësia e(int)); printf("Array %dx %d: \n", x, y); për (i = 0; i

    #21: Jepet një grup dydimensional b. Duke e konsideruar atë si një matricë, transpozoni b.

    #përfshi #përfshi #përfshi int main() ( int *arr, *arrT, x, y, i, j; srand(koha(NULL)); x = 1 + rand() % 7; y = 1 + rand() % 7; arr = (int*)malloc(x*y*madhësia e(int)); printf("Matrica %dx %d: \n", x, y); për (i = 0; i

    Nr. 1 (shtesë): Jepet një grup dydimensional. Rendit vargjet e tij në rend jo-zvogëlues të elementeve të tyre të parë.

    #përfshi #përfshi #përfshi int main() ( int *arr, x, y, i, j, k, d, max = 0; srand(koha(NULL)); x = 1 + rand() % 10; y = 1 + rand() % 7; arr = (int*)malloc(x*y*madhësia e(int)); printf("Array %dx %d: \n", x, y); për (i = 0; i *(arr + max*y)) max = j; për (k = 0; k

    #2 (Shtesë): Përcaktoni nëse matrica katrore e dhënë është ortonormale, d.m.th. ai në të cilin prodhimi skalar i çdo çifti vargjesh të dallueshme është 0, dhe prodhimi skalar i çdo vargu me vetveten është 1.

    #përfshi #përfshi int main() ( int *arr; int x, i, j, k, shuma = 0; printf ("Fut madhësinë e matricës katrore: "); scanf ("%d", &x); arr = (int *)malloc(x*x*sizeof(int)); printf("Fut elementet e matricës %dx %d: \n", x, x); për (i = 0; i

    Nr. 3 (Shtesë): Jepet një grup dydimensional katror. Gjeni shumën e elementeve të secilës diagonale të saj paralele me dytësoren.

    #përfshi #përfshi #përfshi int main() ( int *arr; int x, y, i, j, shuma; srand(koha(NULL)); x = 2 + rand() % 6; arr = (int*)malloc(x*y* sizeof(int)); printf ("Array %dx %d: \n", x, x); për (i = 0; i

    Probleme në vargje dydimensionale

    1) Jepet një grup dydimensional i numrave të plotë. Hartoni një program:

    a) shfaqja e elementit të vendosur në këndin e sipërm të djathtë të grupit;

    b) shfaqja e elementit të vendosur në këndin e poshtëm të majtë të grupit;

    c) shfaqja e ndonjë elementi të rreshtit të dytë të grupit në ekran;

    d) shfaqja e ndonjë elementi të kolonës së tretë të grupit;

    e) shfaqja e ndonjë elementi të grupit në ekran.

    2) Jepet një grup me numra të plotë dydimensional. Ndrysho:

    a) elementë të vendosur në këndin e sipërm të djathtë dhe të poshtëm të majtë;

    b) elementet e vendosura në këndin e poshtëm djathtas dhe majtas sipër;

    3) Dihet numri i linjës, mbi të cilin ndodhet elementi i diagonales kryesore të një grupi dydimensional të numrave të plotë. Shfaq vlerën e këtij elementi.

    4) Ekrani (në një rresht):

    a) të gjithë elementët e diagonales kryesore të grupit

    b) të gjithë elementët e diagonales kryesore të grupit, duke filluar me elementin e vendosur në këndin e poshtëm djathtas.

    5) Zëvendësoni vlerat e të gjithë elementëve të diagonales kryesore të një grupi të plotë me zero.

    6) Zëvendësoni vlerat e të gjithë elementëve të diagonales dytësore të një grupi të plotë me vlera të barabarta me 100.

    7) Përcaktoni:

    a) shuma e elementeve të diagonales kryesore të grupit;

    b) shuma e elementeve të diagonales dytësore të vargut;

    c) mesataren aritmetike të elementeve të diagonales kryesore të vargut;

    d) mesataren aritmetike të elementeve të diagonales dytësore të vargut;

    e) elementin minimal (maksimal) të diagonales kryesore të grupit;

    f) elementi maksimal (minimumi) i diagonales dytësore të një vargu real;

    g) koordinatat e elementit të parë maksimal të diagonales kryesore;

    h) koordinatat e elementit të parë minimal të diagonales kryesore.

    a) shfaq të gjithë elementët e rreshtit të pestë të grupit;

    b) të shfaqë të gjithë elementët e rreshtit të tretë të grupit, duke filluar nga elementi i fundit i kësaj rreshti;

    c) të shfaqë të gjithë elementët e kolonës së s-të të grupit;

    d) zëvendësoni vlerat e të gjithë elementëve të rreshtit të dytë të grupit me numrin 5;

    e) zëvendësoni vlerat e të gjithë elementëve të kolonës së pestë me numrin 10.

    f) përcakton elementin maksimal (minimum) të kolonës së tretë;

    9) Jepet një grup dydimensional i numrave të plotë. Hartoni një program:

    a) llogaritja e prodhimit të çdo dy elementi të çdo vargu vargu

    b) shuma e të gjithë elementeve të çdo vargu vargu;

    10) Jepet një grup dydimensional i numrave të plotë. Përcaktoni:

    a) a) në cilën kolonë të grupit shuma e elementeve është më e vogël, në të parën ose në të fundit;

    b) b) në cilën rresht prodhimi i elementeve është më i madh, në të dytin apo në të tretën.

    11) Jepet një grup dydimensional me numra të plotë me madhësi 10 x 10. Shfaq një pjesë të grupit në ekran:

    a) ndodhet mbi diagonalen kryesore;



    b) ndodhet poshtë diagonales kryesore;

    c) ndodhet mbi diagonalen dytësore;

    d) ndodhet poshtë diagonales dytësore;

    12) Jepet një grup dy-dimensional i numrave të plotë:

    a) në secilën nga kolonat e saj gjeni elementin maksimal (minimum);

    b) koordinatat e elementit maksimal (minimal);

    c) shumën e elementeve tek në çdo kolonë (rresht);

    d) numrin e elementeve që janë shumëfish të A ose B.

    e) gjeni rreshtin me shumën maksimale të elementeve;

    f) gjeni kolonën me shumën minimale të elementeve.

    Jepet një grup dydimensional 5x5. Organizoni hyrjen e elementeve, daljen e rezultatit në formën e dritareve. Pas një pauze, ndryshoni ngjyrën e dritareve në të cilat ruhen elementët e specifikuar sipas gjendjes.

    Opsionet e detyrave:

    1.

    2.

    3.

    4.

    5.

    6.

    7.

    8.

    9.

    10.

    11. Gjeni produktin e elementeve që janë mbi diagonalen kryesore. Zëvendësoni të gjithë elementët tek me numrin e gjetur.

    12. Gjeni shumën e elementeve që janë në pozicione tek (shuma e indekseve (i + j) për Х ij është një numër tek). Zëvendësoni të gjithë elementët negativë me numrin e gjetur.

    13. Gjeni produktin e të gjithë elementëve që janë në diagonalen kryesore. Zëvendësoni të gjithë elementët e rreshtit të pestë dhe kolonës së dytë me numrin e gjetur.

    14. Gjeni mesataren aritmetike të elementeve në diagonalen kryesore dhe mesataren aritmetike në diagonalen anësore. Ndërroni elementet në diagonale.

    15. Gjeni mesataren aritmetike të elementeve pozitive që janë mbi diagonalen kryesore. Zëvendësoni të gjithë elementët negativë me numrin e gjetur.

    16. Gjeni shumën e elementeve tek. Zëvendësoni me numrin e gjetur të gjithë elementët që janë mbi diagonalen dytësore.

    17. Gjeni prodhimin e elementeve të rreshtit i dhe kolonës j (i, j- futni paraprakisht nga tastiera). Zëvendësoni me numrin e gjetur të gjithë elementët poshtë diagonales dytësore.

    18. Gjeni prodhimin e elementeve që janë në pozicion çift (shuma e indekseve (i + j) për Х ij është një numër tek). Zëvendësoni të gjithë elementët në diagonalen kryesore me numrin e gjetur.

    19. Gjeni mesataren aritmetike të elementeve tek. Zëvendësoni të gjithë elementët e diagonales anësore me numrin e gjetur.

    20. Gjeni shumën e të gjithë elementeve çift që janë mbi diagonalen dytësore. Zëvendësoni të gjithë elementët e rreshtit të katërt me numrin e gjetur.

    21. Gjeni produktin e elementeve që janë mbi diagonalen kryesore. Zëvendësoni të gjithë elementët tek me numrin e gjetur.

    22. Gjeni shumën e elementeve që janë në pozicione tek (shuma e indekseve (i + j) për Х ij është një numër tek). Zëvendësoni të gjithë elementët negativë me numrin e gjetur.

    23. Gjeni produktin e të gjithë elementëve që janë në diagonalen kryesore. Zëvendësoni të gjithë elementët e rreshtit të pestë dhe kolonës së dytë me numrin e gjetur.

    24. Gjeni mesataren aritmetike të elementeve në diagonalen kryesore dhe mesataren aritmetike në diagonalen anësore. Ndërroni elementet në diagonale.

    25. Gjeni mesataren aritmetike të elementeve pozitive që janë mbi diagonalen kryesore. Zëvendësoni të gjithë elementët negativë me numrin e gjetur.

    Për shembull: Gjeni mesataren aritmetike të elementeve në diagonalen kryesore

    Pas një pauze:

    Pyetje kontrolli

    1. Çfarë është modaliteti i tekstit dhe si ndryshon ai nga modaliteti i rregullt?

    2. Çfarë është një dritare?

    3. Si të lëvizni kursorin në koordinatat e specifikuara të dritares?

    4. Si të ndryshoni ngjyrën e shkronjave/sfondit?

    Prezantimi

    Pajisjet teknike moderne të dizajnuara për kontroll dhe automatizim përdorin gjerësisht qarqet binare dhe sistemin e numrave binar. Teoria e algjebrës logjike përdoret për analizën dhe sintezën e qarqeve komutuese kombinuese dhe sekuenciale.

    Materiali i leksionit është paraqitur në tre kapituj. Në kapitullin e parë jepen konceptet bazë të teorisë së algjebrës së logjikës, trajtohen forma të ndryshme të paraqitjes së funksioneve të Bulit. Kapitulli i dytë i kushtohet çështjeve të minimizimit të paraqitjeve të funksioneve të Bulit, që është baza e sintezës abstrakte të pajisjeve diskrete. Kapitulli i tretë përmban informacion se si të zbatohen funksionet Boolean bazuar në qarqet komutuese, që është baza për sintezën strukturore të pajisjeve diskrete.

    Gjatë shkrimit të shënimeve të ligjëratës është përdorur literatura e mëposhtme: për pjesën 1.1 -; për seksionin 1.2 - ; për seksionin 1.3 - ; për seksionin 2.1 - ; për seksionin 2.2 - ; për seksionet 3.1, 3.2 - .



    Artikuj të ngjashëm: