Kuidas rakendada maatriksit pascal. Kahemõõtmelised Pascali massiivid - maatriksid

Viimane tund Pascal kirjutati juba 7. märtsil, siis analüüsisime seda. Täna saame teada, mis see on kahemõõtmeline massiiv paskalis, kuidas seda kirjeldatakse ja mis see on. Lisateave allpool.

Mis siis täpselt on kahemõõtmeline massiiv? Lihtsaks tajumiseks kujutleme ühemõõtmelist massiivi joonena, milles kõik elemendid lähevad üksteise järel horisontaalselt, ja kahemõõtmelist ruuduna, milles elemendid asuvad nii horisontaalselt kui ka vertikaalselt. Kahemõõtmeline massiiv koosneb ridadest ja veergudest, mida nimetatakse ka maatriksiks või maatriksiks.

Kuidas kirjeldatakse kahemõõtmelisi massiive? Kahemõõtmeliste massiivide kirjutamiseks on mitu võimalust, kaalun neist kahte.

1 viis massiivi kirjeldamiseks: massiivi muutujate tüübi massiiv (täisarv / reaalne / bait);

2 viisi massiivi kirjeldamiseks: massiivi massiivi muutujate tüüp;

Esmalt kirjeldatakse ridu (1..m) ja seejärel veerge (1..n).

Teises meetodis kirjeldatakse seda justkui kahte ühemõõtmelist massiivi, mis koos moodustavad ühe kahemõõtmelise.

Kahemõõtmelist massiivi saab kirjeldada jaotises Tüüp, sellele järgnevaks viitamiseks mitu korda või muutuja kirjelduse jaotises Var. Ma tahan juhtida teie tähelepanu asjaolule, et m ja n asemel võite asendada numbreid, või võite kasutada konstandid.

Näide kahemõõtmelise massiivi määratlemisest muutujadeklaratsiooni jaotises:

Const
m = 100;
n = 100;
var
a: täisarvu massiiv;

Sel juhul määrasime kahemõõtmelise massiivi a suurusega 100 x 100, st saime ruutmaatriksi.

Näide maatriksimassiivi määratlemisest jaotise Tüüp abil:

Const
m = 100;
n = 100;
Tüüp
Maatriks = täisarvu massiiv;
var
a: maatriks;
b: maatriks;

Teises näites täpsustasime kahte identset maatriksimassiivi mõõtmetega 100 x 100, samas kui b massiivi kirjeldamisel ei pidanud me selle suurusi ja andmetüüpi uuesti kirjeldama.

Kuidas pääseda juurde kahemõõtmelise massiivi muutuvale lahtrile?

Kahemõõtmelise massiivi viitamiseks peate kõigepealt määrama rea ​​numbri ja seejärel veeru numbri järgmiselt:

x on mis tahes muutuja, a on massiivi nimi, i on rea number, j on veeru number.

Veelgi enam, i ja j võivad olla nii muutujad kui ka täisarvud.

Näide massiivi andmete kirjutamisest:

I jaoks: = 1 kuni n do // määrake silmus rea number
J jaoks: = 1 kuni m do // veerus oleva numbri määramine tsüklis
a: = juhuslik (100); // juhusliku väärtuse määramine lahtrile rea numbri i ja veeru numbriga j

Täitsime massiivi juhuslike arvudega 1–100.

Näidisprogramm, mis kasutab kahemõõtmelist massiivi, milles täidame massiivi juhuslike numbritega ja kuvame selle ekraanil:

Var // muutujate ja massiivi kirjeldus
Maatriks: täisarvu massiiv;
i, j: täisarv;

Begin // põhiprogrammi algus
writeln ("Kahemõõtmeline massiiv:"); // Dialoog kasutajaga

I jaoks: = 1 kuni 10 do // massiivi täitmine
j jaoks: = 1 kuni 10
Maatriks: = juhuslik (100);

I jaoks: = 1 kuni 10 algab // Väljuge massiiv
j jaoks: = 1 kuni 10
kirjutama (maatriks, "");
writeln
writeln ("sait"); // Soovi korral saate kustutada
lõpp; // Programmi lõpp

// readln // Kasutatakse Turbo Pascalis

Kahemõõtmelist massiivi Pascalis käsitletakse kui ühemõõtmelist massiivi, mille elemenditüüp on samuti massiiv (massiivide massiiv). Elementide asukohta kahemõõtmelistes Pascali massiivides kirjeldatakse kahe indeksiga. Neid saab kujutada ristkülikukujulise tabeli või maatriksina.

Vaatleme kahemõõtmelist Pascali massiivi mõõtmetega 3 * 3, see tähendab, et sellel on kolm rida ja igal real on kolm elementi:

Igal elemendil on oma number, nagu ühemõõtmelistel massiividel, kuid nüüd koosneb number juba kahest numbrist - rea numbrist, milles element asub, ja veeru numbrist. Seega määratakse elemendi number rea ja veeru ristumiskohaga. Näiteks 21 on üksus teises reas ja esimeses veerus.

Kahemõõtmelise Pascali massiivi kirjeldus.

Kahemõõtmelise Pascali massiivi kuulutamiseks on mitu võimalust.

Me juba teame, kuidas kirjeldada ühemõõtmelisi massiive, mille elemendid võivad olla mis tahes tüüpi, ja seetõttu võivad elemendid ise olla massiivid. Mõelge järgmisele tüüpide ja muutujate kirjeldusele:

Näide kahemõõtmelise Pascali massiivi kirjeldamisest

Tüüp
Vector = massiiv<тип_элементов>;
Maatriks = vektorite massiiv;
Var m: maatriks;

Oleme kuulutanud kahemõõtmelise Pascali massiivi m, mis koosneb 10 reast, millest igaühel on 5 veergu. Sel juhul pääseb igale i-ndale joonele juurde m [i] ja igale i-nda rea ​​sees olevale j-ndale elemendile - m [i, j].

Kahemõõtmeliste Pascali massiivide tüüpide määratluse saab määrata ühel real:

Tüüp
Maatriks = massiivi massiiv< тип элементов >;
või isegi lihtsam:
tüüp
maatriks = massiiv<тип элементов>;

Viide kahemõõtmelise massiivi elementidele näeb välja: M [i, j]. See tähendab, et me tahame, et üksus asuks i-ndas ja j-ndas veerus. Peamine on siin mitte segada ridu veergudega, vastasel juhul võime jällegi saada kõne olematule elemendile. Näiteks helistamisel elemendile M on õige tähistus, kuid see võib põhjustada programmis tõrke.

Põhitoimingud kahemõõtmeliste Pascali massiividega

Kõik, mida on öeldud ühemõõtmeliste massiividega tehtavate põhitoimingute kohta, kehtib ka maatriksite kohta. Ainus tegevus, mida saab tervikuna sama tüüpi maatriksitel teha, on määramine. See tähendab, et kui meie programm kirjeldab näiteks kahte sama tüüpi maatriksit,

tüüp
maatriks = täisarvu massiiv;
var
a, b: maatriks;

siis saate programmi täitmise ajal määrata maatriksi a maatriksi väärtus b(a: = b). Kõik muud toimingud viiakse läbi elementide kaupa, samal ajal kui elementidel saate teha kõik kehtivad toimingud, mis on määratletud massiivi elementide andmetüübi jaoks. See tähendab, et kui massiiv koosneb täisarvudest, siis saab selle elementidele teha täisarvude jaoks määratletud toiminguid, kuid kui massiiv koosneb tähemärgist, siis on nende jaoks rakendatavad tähemärkidega töötamiseks määratletud toimingud.

Kahemõõtmelise Pascali massiivi sisestamine.

Ühemõõtmelise massiivi elementide järjestikuseks sisestamiseks kasutasime a for loopi, milles muutsime indeksi väärtust esimesest viimaseks. Kuid kahemõõtmelise Pascali massiivi elemendi positsiooni määravad kaks indeksit: rea number ja veeru number. See tähendab, et peame rea numbrit järjestikku muutma esimesest viimaseks ja igas reas itereerima veergude elemendid üle esimesest viimaseni. See tähendab, et meil on silmuste jaoks vaja kahte ja üks neist pesitseb teise sisse.

Mõelge kahemõõtmelise Pascali massiivi klaviatuurilt sisestamise näitele:

Näide kahemõõtmelise Pascali massiivi sisestamiseks klaviatuurilt

tüüp
maatriks = täisarvu massiiv;
var
a, maatriks;
i, j: täisarv; (massiivi indeksid)
algama
i jaoks: = 1 kuni 5 do (silmus kõigi ridade kordamiseks)
readln (a [i, j]); (elemendi klaviatuuri sisestus i-ndas ja j-ndas veerus)

Kahemõõtmelise Pascali massiivi saab täita juhuslikult, s.t. kasutage juhuslikku (N) funktsiooni ja määrake maatriksi igale elemendile ka mõne avaldise väärtus. Kahemõõtmelise Pascali massiivi täitmise viis valitakse sõltuvalt antud ülesandest, kuid igal juhul tuleb määratleda iga rea ​​iga element ja veerg.

Kuvab ekraanil kahemõõtmelise Pascali massiivi.

Kahemõõtmelise Pascali massiivi elementide väljund viiakse läbi ka järjestikku, on vaja printida iga rea ​​ja iga veeru elemendid. Samas tahaksin, et sama rea ​​elemendid trükitaks kõrvuti, s.t. rida ja veeru elemendid asusid üksteise all. Selleks peate tegema järgmise toimingute jada (kaaluge eelmises näites kirjeldatud massiivi programmi fragmenti):

Näide kahemõõtmelise Pascali massiivi väljundi programmist

i jaoks: = 1 kuni 5 do (silmus kõigi ridade kordamiseks)
algama
j jaoks: = 1 kuni 10 do (itereeritakse rea kõigi veerude kaupa)
kirjuta (a [i, j]: 4); (maatriksi i-ndas reas paiknevate elementide printimine ühel ekraanireal, kusjuures iga elemendi väljundiks eraldatakse 4 positsiooni)
writeln; (enne maatriksi rea numbri muutmist peate kursori viima uue ekraanirea algusesse)
lõpp;

Märkus ( see on tähtis!): üliõpilasprogrammides tekib viga klaviatuuri sisestamise või massiivi väljundi proovimisel järgmiselt: readln (a), writeln (a), kus aga- See tüübi muutuja massiiv. Kuid neid üllatab koostaja teade, et seda tüüpi muutujat ei saa lugeda ega printida. Ehk saate aru, miks seda ei saa teha, kui kujutate ette N kruusi seismas ja teie käes on näiteks veekeetja. Kas saate kõik kruusid korraga täita käsuga "vett valada"? Ükskõik kui palju te ka ei üritaks, peate valama igasse kruusi eraldi. Massiivielementide täitmine ja kuvamine peaks toimuma ka järjest ja elementide kaupa, kuna arvutimälus asuvad massiivi elemendid järjestikustes lahtrites.

Kahemõõtmelise Pascali massiivi kujutamine mälus

Masina mälus oleva abstraktse massiivi elemendid paiknevad vastavalt kirjeldusele füüsiliselt järjestikku. Pealegi hõivab iga element mälus selle suurusele vastava baitide arvu. Näiteks, kui massiiv koosneb täisarvulise elemendist, hõivab iga element kaks baiti. Ja kogu massiiv võtab S ^ 2 baiti, kus S on massiivi elementide arv.

Ja kui palju ruumi võtab massiividest koosnev massiiv, s.t. maatriks? Ilmselgelt: S i ^ S j, kus S i on ridade arv ja S j on elementide arv igas reas. Näiteks massiivi nagu

Maatriks = täisarvu massiiv;

see võtab 12 baiti mälu.

Kuidas selle massiivi elemendid mälus asuvad? Mõelgem mälu massiivi M maatriksi paigutusele.

Igale täisarvulise elemendi M jaoks eraldatakse kaks mälurakku. Mällu paigutamine toimub "alt üles". Elemendid paigutatakse indeksimuutuse järjekorda, mis vastab pesastatud silmuste skeemile: kõigepealt pannakse esimene rida, siis teine, kolmas ... Rida sees lähevad elemendid järjestusse: esimene, teine, jne.

Nagu me teame, on juurdepääs mis tahes muutujale võimalik ainult siis, kui on teada selle mäluraku aadress, kuhu muutuja on salvestatud. Muutuja jaoks eraldatakse konkreetne mälu programmi laadimisel, see tähendab, et muutuja ja raku aadressi vahel luuakse vastastikune vastavus. Aga kui deklareerisime muutuja massiiviks, siis programm "teab" massiivi alguse aadressi, see tähendab selle esimest elementi. Kuidas pääsete juurde massiivi kõigile teistele elementidele? Reaalse juurdepääsu korral mälumälule, mis salvestab kahemõõtmelise massiivi elemendi, arvutab süsteem oma aadressi järgmise valemi abil:

Addr + SizeElem * Cols * (I -1) + SizeElem * (J -1),

kus Addr on tegelik algusaadress, millel massiiv mälus asub; I, J - elementide indeksid kahemõõtmelises massiivis; SizeElem - massiivi elemendi suurus (näiteks kaks baiti täisarvuliste elementide jaoks); Cols - rea elementide arv.

Avaldist SizeElem * Cols * (I -1) + SizeElem * (J -1) nimetatakse nihkeks massiivi algusest.

Kui palju massiivi jaoks on eraldatud mälu?

Mõelgem mitte niivõrd küsimusele, kui palju massiivi mälu on eraldatud (seda arutasime eelmises osas), vaid seda, milline on massiivi maksimaalne lubatud suurus, arvestades piiratud mälumahtu.

Programmi töötamiseks eraldatakse mälu 64 KB segmentidena ja vähemalt üks neist on määratletud järgmiselt andmesegment... Just selles segmendis asuvad andmed, mida programm töödeldakse. Ükski programmimuutuja ei saa asuda rohkem kui ühes segmendis. Seega, isegi kui segmendis on ainult üks muutuja, mida nimetatakse massiiviks, ei saa see vastu võtta rohkem kui 65536 baiti. Kuid peaaegu kindlasti kirjeldatakse andmesegmendis lisaks massiivile veel mõningaid muutujaid, nii et massiivi jaoks eraldatava tegeliku mälumahu leiab valem: 65536-S, kus S on teiste muutujate jaoks juba eraldatud mälu.

Miks me peame seda teadma? Et mitte imestada, kui tõlkija kompileerimise ajal genereerib programmis kirjeldusega kohtudes liiga pika massiivi deklareerimise kohta veateate (süntaksi seisukohalt õige):

Sisestage myArray = täisarvu massiiv;

Teate juba, et arvestades täisarvude kahebaidist esindatust, võite tegelikult deklareerida massiivi, mille elementide arv on võrdne 65536/2 –1 = 32767. Ja siis ainult siis, kui muid muutujaid pole. 2D massiividel peaks olema veelgi väiksem indekspiir.

Näited kahemõõtmeliste Pascali massiividega seotud probleemide lahendamisest

Ülesanne: Leidke maatriksi nullist elementide korrutis.

Lahendus:

  • Selle probleemi lahendamiseks vajame muutujaid: maatriks, mis koosneb näiteks täisarvulistest elementidest; P on muude kui 0 elementide korrutis; I, J - massiivi indeksid; N, M - ridade ja veergude arv maatriksis.
  • Sisendandmed on N, M - sisestage nende väärtused klaviatuurilt; maatriks - korraldame maatriksi sisendi protseduuri kujul, maatriksi täidame juhuslikult, s.t. juhusliku () funktsiooni abil.
  • Väljundandmed on muutuja P (toode) väärtus.
  • Programmi täitmise õigsuse kontrollimiseks on vajalik maatriks ekraanil kuvada, selleks korraldame maatriksi kuvamise protseduuri.
  • Edusammud probleemi lahendamisel:

kõigepealt arutame põhiprogrammi täitmist, arutame protseduuride rakendamist veidi hiljem:

  • sisestage N ja M väärtused;
  • Tutvustame kahemõõtmelise Pascali massiivi, selleks pöördume protseduuri vvod (a) juurde, kus a on maatriks;
  • Trükime tulemuseks oleva maatriksi, selleks viitame printimise (a) protseduurile;
  • Määratagem muutujale P = 1 algväärtus;
  • Kordame järjestikku I kõigi ridade vahel 1.-st N-ni, igas reas kordame kõik J-i veerud 1.-st M-ni, maatriksi iga elemendi puhul kontrollime tingimust: kui a ij ? 0, siis korrutatakse korrutis P P elemendiga a ij (P = P * a ij);
  • Näitame nullmõõduliste maatrikselementide korrutise väärtust - P;

Nüüd räägime protseduuridest.

Kommenteerige (see on tähtis!) Protseduuri parameeter võib olla mis tahes etteantud tüüpi muutuja, mis tähendab, et massiivi kui parameetri edastamiseks protseduurile tuleb selle tüüp eelnevalt kirjeldada. Näiteks:

Tüüp
Maatriks = täisarvu massiiv;
protseduuri praimer (a: maatriks);
..............................

Naaseme nüüd oma protseduuride juurde.

Maatriksi sisestamise protseduuri nimetatakse vvodiks, protseduuri parameetriks on maatriks ja seetõttu tuleb see edastada põhiprogrammile, seetõttu tuleb parameeter edastada viitega. Siis näeb meie protseduuri päis välja selline:

Protseduur vvod (var m: maatriks);

Pesastatud silmuste rakendamiseks protseduuris vajame kohalikke loendurimuutujaid, näiteks k ja h. Maatriksi täitmise algoritmist on juba juttu olnud, nii et me ei korda seda.

Maatriksi ekraanil kuvamise protseduuri nimetatakse printimiseks, protseduuri parameetriks on maatriks, kuid antud juhul on see sisendparameeter, seetõttu edastatakse see väärtuse järgi. Selle protseduuri pealkiri näeb välja selline:

Protseduuri print (m: maatriks);

Ja jällegi, pesastatud silmuste rakendamiseks protseduuris vajame loendureid, nimetagem neid samaks - k ja h. Maatriksi ekraanil kuvamise algoritmi kirjeldati eespool, me kasutame seda kirjeldust.

Näidisprogramm kahemõõtmelise Pascali massiivi jaoks

Programm proizvedenie;
Tüüp
Maatriks = täisarvu massiiv;
Var
A: maatriks;
N, m, i, j: bait;
P: täisarv;
Protseduur vvod (var m: maatriks);
Var k, h: bait;
Alusta
I jaoks: = 1 kuni n do (protseduuri muutuja n on globaalne, mis tähendab "tuntud")
J: = 1 kuni m do (protseduuri muutuja m on globaalne, mis tähendab "tuntud")
M: = juhuslik (10);
Lõpp;
Protseduuri print (m: maatriks);
Var k, h: bait;
Alusta
I jaoks: = 1 kuni n tegema
algama
J jaoks: = 1 kuni m
Kirjutage (M: 4);
Writeln;
lõpp;
Lõpp;
Alusta (põhiprogrammi algus)
Writeln ("Sisestage maatriksi mõõde:");
Readln (N, M);
Vvod (a);
Trükk (a);
P: = 1;
I jaoks: = 1 kuni N teha
J jaoks: = 1 kuni M
Kui a<>0, siis p: = p * a;
Writeln (p);
Lõpp.

Kahemõõtmeline massiiv andmestruktuur, mis salvestab vormi ristkülikukujulise maatriksi:

A 11 a 12 a 13 a 14 a 15 ... a 1m a 21 a 22 a 23 a 24 a 25 ... a 2m a 31 a 32 a 33 a 34 a 35 ... a 3m a 41 a 42 a 43 a 44 a 45 ... a 4m a 51 a 52 a 53 a 54 a 55 ... a 5m... ... ... ... ... ... ... ... a n1 a n2 a n3 a n4 a n5... a nm

  • Maatriksis määratakse iga element rea numbri ja veeru numbri järgi, mille ristumiskohas see asub
  • Pascalis loetakse kahemõõtmelist massiivi massiiviks, mille elemendid on lineaarsed massiivid (massiivide massiivid). Järgnevad kaks kahemõõtmeliste massiivide kirjeldust on identsed var mass: reaalse massiivi massiiv; var mass: reaalse massiiv;
  • Nimetatakse maatriks, milles ridade arv on võrdne veergude arvuga ruutmaatriks.
  • Maatriksielemendile viitamiseks peate kasutama kahte indeksit, mis tähistavad rea numbrit ja veeru numbrit. Näiteks MyArr1... IN sel juhul massiivi element (MyArr1) asub neljandas reas ja viiendas veerus.
  • Kõik, mida on öeldud ühemõõtmeliste massiividega tehtavate põhitoimingute kohta, kehtib ka maatriksite kohta. Kordades tsüklis oleva massiivi kohal, toimivad indeksidena täisarvu muutujad. Traditsiooniliselt kasutatakse i "Ja veerg on" j “.
  • Maatriksitöötlus seisneb selles, et algul käsitletakse esimese rea (veeru) elemente ükshaaval, siis teist ja nii kuni viimaseni.
  • Kui elemendi rea number on sama kui veeru number ( i = j), see tähendab, et element asub peamine diagonaal maatriksid.
  • Kui element asub külgdiagonaalis, on indeksid seotud elementide arvuga ( n) järgmise võrdsusega: i + j = n + 1

Kahemõõtmelise massiivi kirjeldus

Kahemõõtmelise massiivi Pascalis kuulutamiseks (kirjeldamiseks) on mitu võimalust.

Massiivi tüübi esialgne kirjeldus

tüübi maatriks = täisarvu massiiv; (täisarvude massiiv) var mass: maatriks;

Muutuja määratlemine massiivina ilma massiivi tüüpi eelnevalt kirjeldamata

var mass: täisarvu massiiv;

Kahemõõtmelise massiivi initsialiseerimine

Kahemõõtmeliste massiivide initsialiseerimisel on iga rida suletud lisapaaris:

Konstantmass: massiiv = ((2,3,1,0), (1,9,1,3), (3,5,7,0));

Kahemõõtmelise massiivi elementide väärtuste sisestamine / väljund

Väga sageli sisestatakse massiivi elementide väärtused klaviatuurilt. See teabe täpsustamise viis on massiividega töötamisel liiga töömahukas. suured suurused... Suure hulga algoritmide silumiseks tuleks selline teabe sisestamine asendada massiivi elementide juhusliku genereerimisega. Selleks kasutage protseduuri juhuslikult ja toimima juhuslik... Kahemõõtmeliste massiividega töötamisel kasutatakse pesastatud silmuseid (tavaliselt parameetriga silmus) eest).

Massiivi täitmine juhuslike numbritega

konst n = 5; m = 10; var i, j: täisarv; maatriks: täisarvu massiiv; alustada juhuslikult; i jaoks: = 1 kuni n do (juurdepääs massiivi ridadele) j: = 1 kuni m do (juurdepääs veergudele elementide kaupa) maatriks: = juhuslik (100); (praeguse elemendi sisse panime juhusliku arvu intervallist: 4); writeln (sisemisest silmusest väljumisel uuele joonele üleminek) ots;

Näited probleemide lahendamisest

Näide 1

Probleemi sõnastamine. Antud juhul on positiivsed täisarvud M ja N. Moodustage M × N täisarvumaatriks, milles kõigi J-veeru elementide väärtus on 5 · J (J = 1,…, N).

Konstant m = 7; n = 10; var i, j: bait; maatriks: täisarvu massiiv; algab i jaoks: = 1 kuni m teha j korral: = 1 kuni n do maatriks: = 5 * j; ... (väljundmassiiv)

Näide 2

Probleemi sõnastamine. Teile antakse positiivsed täisarvud M, N ja hulk M numbreid. Moodustage M × N maatriks, kus iga veerg sisaldab kõiki algse hulga numbreid (samas järjekorras).

Konstant m = 5; n = 7; vektor: täisarvu massiiv = (3, 5, 2, 7, 4); var i, j: bait; maatriks: täisarvu massiiv; alusta j: = 1 kuni n do jaoks (võta j-nda veerg) i jaoks: = 1 kuni m do (viita ridade kaupa j-nda veeru elementidele) maatriks: = vektor [i]; (juurutamine) ... (Saadud kahemõõtmelise massiivi väljastamine)

Kodutöö

  1. Antud juhul on positiivsed täisarvud M ja N. Moodustage kõigi elementidega M × N täisarvumaatriks 1. rida väärtus on 10 · I (I = 1,…, M).
  2. Teile antakse positiivsed täisarvud M, N ja hulk N numbreid. Moodustage maatriks M × N, kus iga rida sisaldab kõiki algse hulga numbreid (samas järjekorras).
  3. Lisaks. Teile antakse positiivsed täisarvud M, N, arv D ja hulk M numbreid. Moodustage maatriks M × N, milles esimene veerg langeb kokku algse numbrikomplektiga ja iga järgmise veeru elemendid on võrdsed eelmise veeru vastava elemendi ja numbri D summaga (selle tulemusena on iga rida maatriksi element sisaldab aritmeetilist progresseerumist).
  4. Lisaks. Esitatakse maatriks M × N. Printige selle elemendid paarisarvudega ridadesse (2, 4,…). Kuvage elemendid rea kaupa, ärge kasutage tingimusoperaatorit.