Ինչպես pascal- ում, գիտակցեք մատրիցը: Երկչափ պասկալ զանգվածներ - մատրիցա

Վերջին դասը Պասկալը գրվել է մարտի 7-ին, ապա մենք ապամոնտաժեցինք: Այսօր մենք սովորում ենք ինչ Երկչափ զանգված ՊասկալումԻնչպես է նկարագրված եւ ինչ է նա ներկայացնում: Ավելին կարդացեք:

Այսպիսով, որն է երկչափ զանգվածը:Լույսի ընկալման համար մենք պատկերացնում ենք միակողմանի զանգված, որպես տող, եւ որ բոլոր տարրերը անցնում են հորիզոնական, իսկ երկկողմանի, որպես հրապարակ, որտեղ գտնվում են հորիզոնական եւ ուղղահայաց: Երկչափ զանգվածը բաղկացած է տողերից եւ սյուներից, դրանք կոչվում են նաեւ մատրիցա կամ մատրիցային զանգված:

Ինչպես են նկարագրում երկչափ զանգվածները: Երկկողմանի զանգվածներ գրելու համար կան մի քանի եղանակներ, ես նրանցից 2-ն եմ համարում:

1 Մեթոդի նկարագրությունը. Զանգահարեք զանգվածի տեսակների զանգվածը (ամբողջական / Իրական / բայթ);

Զանգվածի նկարագրման 2 եղանակ. Զանգվածի տեսակների զանգվածի զանգված.

Նախ նկարագրեք տողերը (1..M), ապա սյուները (1..N):

Երկրորդ մեթոդով այն նկարագրվում է այնպես, ասես երկու միակողմանի զանգված, որոնք միասին կազմում են մեկ երկչափ:

Երկչափ զանգված կարելի է նկարագրել տիպի բաժնում `դրան հաջորդող բողոքարկման համար մի քանի անգամ կամ VAR- ի փոփոխական նկարագրություններում, ես ուզում եմ ուշադրություն դարձնել դրան, եւ կարող եք փոխարինել համարները ,

Երկկողմանի զանգվածի օրինակ `փոփոխական նկարագրություններում Բաժին.

Կոնստեր
մ \u003d 100;
n \u003d 100;
var.
Ա. Ամբողջական զանգված;

Այս դեպքում մենք սահմանեցինք 100-ի չափի երկչափ զանգված 100-ի համար, այսինքն, ունենք քառակուսի մատրիցա:

Matrix զանգվածի առաջադրանքի օրինակ `տիպի բաժնի միջոցով.

Կոնստեր
մ \u003d 100;
n \u003d 100;
Տիպ
Matrix \u003d ամբողջ թվերի զանգված;
var.
A: Matrix;
Բ: մատրիցա;

Երկրորդ օրինակով մենք սահմանեցինք երկու նույնական մատրիցային զանգված, 100-ի համար 100-րդ չափերով, տեսարժան վայրը նկարագրելու ժամանակ մենք ստիպված չէինք նորից նկարագրել դրա չափը եւ տվյալների տեսակը:

Ինչպես մուտք գործել բջջային փոփոխական երկչափ զանգված:

Երկկողմանի զանգվածին դիմելու համար հարկավոր է նախ նշել համարի համարը, այնուհետեւ սյունակի համարը հետեւյալ կերպ.

x-ցանկացած փոփոխական, A - զանգվածի անուն, տող I-number, J - սյունակի համարը:

Ավելին, ես եւ J- ն կարող եմ լինել ինչպես փոփոխականներ, այնպես էլ ամբողջ թվեր:

Զանգվածի տվյալների գրելու օրինակ.

Որովհետեւ ես. \u003d 1-ից n do // առաջադրանք գծի հանգույցում
J. \u003d 1-ից M Do // Առաջադրանք սյունակի համարի ցիկլում
A: \u003d պատահական (100); // բջջային համարը եւ պատահական սյունակի համարը նշանակելը

1-ից 100-ի պատահական թվերով լցրեցինք զանգված:

Ծրագրի օրինակ `օգտագործելով երկչափ զանգված, որի միջոցով մենք լցնում ենք պատահական թվերի զանգված եւ ցուցադրվում էկրանին.

VAR // Փոփոխականների եւ զանգվածի նկարագրությունը
Matrix. Ամբողջ ամբողջական զանգված;
Ես, J. Ամբողջ

Սկիզբ // Տնային ծրագիր
Writeln ("Երկչափ զանգված."); // երկխոսություն օգտվողի հետ

Համար i. \u003d 1-ից 10-ը // զանգվածը լրացնելը
J- ի համար \u003d 1-ից 10 անել
Matrix. \u003d Պատահական (100);

Համար i: \u003d 1-ից 10-ը սկսում են // զանգվածի ելքը
J- ի համար \u003d 1-ից 10 անել
Գրեք (մատրիցա, "»);
Writeln.
Writeln ("կայք"); // եթե ցանկանում եք, կարող եք ջնջել
վերջ; // ծրագրի ավարտը

// Readln // օգտագործվում է Turbo Pascal- ին

Պասկալում երկչափ զանգվածը մեկնաբանվում է որպես մեկ ծավալային զանգված, որի տարրերի տեսակը նույնպես զանգված է (զանգվածի զանգված): Երկչափ pascal զանգվածներում տարրերի դիրքը նկարագրվում է երկու ցուցանիշով: Դրանք կարող են ներկայացվել որպես ուղղանկյուն սեղան կամ մատրիցա:

Դիտարկենք 3 * 3 չափսով պասկալի երկչափ զանգված, այսինքն, դա կլինի երեք տող, եւ յուրաքանչյուր տողում երեք կետ.

Յուրաքանչյուր տարր ունի իր համարը, ինչպես միակողմանի զանգվածներ, բայց այժմ այդ թիվը արդեն բաղկացած է երկու թվից `գծի համարները, որոնցում գտնվում է տարրը: Այսպիսով, տարրի համարը որոշվում է լարային եւ սյունակի հատմամբ: Օրինակ, 21-ը տարրն է, որը կանգնած է երկրորդ գծում եւ առաջին սյունակում:

Պասկալի երկչափ զանգվածի նկարագրությունը:

Պասկալի երկչափ զանգվածը հռչակելու մի քանի եղանակ կա:

Մենք արդեն գիտենք, թե ինչպես նկարագրել միակողմանի զանգվածներ, որոնց տարրերը կարող են ունենալ ցանկացած տիպ, եւ, հետեւաբար, տարրերն իրենք են: Դիտարկենք հետեւյալ նկարագրությունը եւ փոփոխականները.

Pascal- ի երկչափ զանգվածի նկարագրության օրինակ

Տիպ
Վեկտոր \u003d զանգված<тип_элементов>;
Matrix \u003d վեկտորի զանգված;
Var M: Matrix;

Մենք հայտարարեցինք Pascal M- ի երկչափ զանգված, որը բաղկացած է 10 տողից, որոնցից յուրաքանչյուրում 5 սյուն է: Այս դեպքում մ [i] - ին կարելի է մուտք գործել յուրաքանչյուր I (I], եւ յուրաքանչյուր J տարրը I-Th Row- ի ներսում է - մ [I, J]:

Երկկողմանի pascal զանգվածների տեսակների սահմանումը կարող է սահմանվել նաեւ մեկ տողում.

Տիպ
Matrix \u003d զանգվածի զանգված< тип элементов >;
Կամ նույնիսկ ավելի հեշտ.
Տիպ
Matrix \u003d Array<тип элементов>;

Երկկողմանի զանգվածի տարրերին դիմելը ունի ձեւը, մ [I, J]: Սա նշանակում է, որ մենք ուզում ենք տարրեր գտնել I-R Row- ում եւ J-Column- ում: Այստեղ գլխավորը սյուների հետ շարքերը շփոթելը չէ, հակառակ դեպքում մենք կարող ենք կրկին դիմել ոչ գոյություն ունեցող տարր: Օրինակ, M տարրին դիմելը ճիշտ մուտքի ձեւ ունի, բայց կարող է սխալ առաջացնել ծրագրի մեջ:

Հիմնական գործողություններ `pascal- ի երկչափ զանգվածով

Այն ամենը, ինչ ասվում է մեկ ծավալային զանգվածներով հիմնական գործողությունների մասին, արդար է ինչպես մատրիցների համար: Միակ գործողությունը, որը կարող է իրականացվել նույն տիպի մատրիցների վրա, առաջադրանքն է: Դրանք, եթե ծրագրի մեջ ունենք մեկ տեսակի երկու մատրիցա, օրինակ,

Տիպ
Matrix \u003d ամբողջ թվերի զանգված;
Var.
Ա, բ. Մատրիցա;

Այնուհետեւ ծրագրի կատարման ընթացքում կարող եք մատրիցի նշանակել Ա Մատրիցայի արժեքը Բ (A: \u003d B): Մնացած բոլոր գործողությունները կատարվում են այլընտրանքային, բոլոր թույլատրելի գործողություններով, որոնք սահմանվում են զանգվածի տարրերի տվյալների տեսակի համար: Սա նշանակում է, որ եթե զանգվածը բաղկացած է ամբողջ թվերից, թվերի համար սահմանված գործողությունները կարող են իրականացվել դրա տարրերից վերեւ, եթե զանգվածը բաղկացած է նիշերով, կիրառվում է խորհրդանիշներով աշխատելու համար:

Մուտքագրեք երկչափ զանգվածի պասկալ:

Միակողմանի զանգվածի տարրերի հաջորդական ներդրման համար մենք օգտագործեցինք ցիկլը, որը 1-ից վերջինս փոխեց ցուցանիշի արժեքը: Բայց Pascal- ի երկչափ զանգվածում տարրի դիրքը որոշվում է երկու ցուցանիշով, գծի համարը եւ սյունակի համարը: Սա նշանակում է, որ մենք պետք է հետեւողականորեն փոխենք գծի քանակը 1-ից մինչեւ վերջին եւ յուրաքանչյուր տող, որպեսզի դասավորեն սյուների տարրերը 1-ից վերջիններ: Այսպիսով, մեզ անհրաժեշտ կլինի երկու ցիկլերի համար, եւ դրանցից մեկը ներդրվելու է մեկ այլ:

Դիտարկենք երկկողմանի զանգվածային պասկալ մուտքագրելու օրինակ, ստեղնաշարից.

Ստեղնաշարից pascal- ի երկչափ զանգվածի ներդրման ծրագրի օրինակ

Տիպ
Matrix \u003d ամբողջ թվերի զանգված;
Var.
Ա, - մատրիցա;
Ես, J. Ամբողջ (զանգվածի ինդեքսներ)
Սկսել
Որովհետեւ ես. \u003d 1-ից 5-ը (ցիկլը բոլոր տողերի կիսանդրին)
Readln (A [I, J]); (I-R Row- ում եւ J-Column- ում ստեղնաշարի տարրից մուտքագրում)

Երկչափ պասկալ զանգվածը կարող է լրացվել պատահականորեն, այսինքն: Օգտագործեք պատահական (ն) գործառույթը, ինչպես նաեւ որոշ արտահայտության արժեք նշանակեք յուրաքանչյուր մատրիցային տարրին: Երկկողմանի pascal զանգվածը լրացնելու եղանակը ընտրվում է `կախված առաջադրանքի հավաքածուից, բայց ամեն դեպքում յուրաքանչյուր տարր պետք է սահմանվի յուրաքանչյուր շարքում եւ յուրաքանչյուր սյունակում:

Էկրանին երկչափ զանգվածի pascal- ի ելքը:

Պասկալի երկչափ զանգվածի արտադրությունն իրականացվում է նաեւ շարքի մեջ, անհրաժեշտ է տպել յուրաքանչյուր շարքի եւ յուրաքանչյուր սյունակի իրերը: Միեւնույն ժամանակ, ես կցանկանայի այն տարրերը, որոնք կանգնած են մեկ տողում, տպագրվել են մոտակայքում, այսինքն: Լարի մեջ, եւ սյունակի տարրերը տեղակայված էին մյուսից ներքեւ: Դա անելու համար դուք պետք է կատարեք գործողությունների հետեւյալ հաջորդականությունը (հաշվի առեք նախորդ օրինակով նկարագրված զանգվածի ծրագրի բեկոր).

Pascal- ի երկչափ զանգվածի ելքային ծրագրի օրինակ

Որովհետեւ ես. \u003d 1-ից 5-ը (ցիկլը բոլոր տողերի կիսանդրին)
Սկսել
J- ի համար \u003d 1-ից 10 անել (սյուների վրա լարային բոլոր տարրերը)
Գրեք (a [i, j]: 4); (Մատրիցայի I- րդ շարքում գտնվող տարրերը մեկ էկրանի շարքում եւ 4 դիրքեր են տրվում յուրաքանչյուր տարրի արդյունքին)
Writeln; (Նախքան մատրիցում գծի քանակը փոխելը, դուք պետք է թարգմանեք կուրսորը նոր էկրանի շարքի սկզբին)
վերջ;

Մեկնաբանություն ( դա կարեւոր է!): Շատ հաճախ ուսանողների ծրագրերում սխալ է առաջացել ստեղնաշարի կամ ելքի մուտք գործելիս, երբ զանգվածը փորձում է հետեւյալ կերպ. Readln (a), writeln (a), որտեղ բայց - սա Տեսակը փոփոխական Զանգված Միեւնույն ժամանակ, նրանք զարմացած են կազմողի հաղորդագրությունից, որ այս տիպի փոփոխականը չի կարող դիտարկել կամ տպել: Միգուցե դուք կհասկանաք, թե ինչու դա հնարավոր չէ անել, եթե ներկայում եք մի գորգեր անընդմեջ կանգնած, եւ ձեր ձեռքերում, օրինակ, ջրով թեյնիկ: Կարող եք թիմի վրա «ջուր» միանգամից լրացնել բոլոր շրջանակները: Անկախ նրանից, թե որքան դժվար է փորձել, բայց յուրաքանչյուր գորգում ստիպված կլինեք առանձին լցնել: Զանգվածի տարրերի էկրանին լրացնելը եւ արտադրանքը պետք է իրականացվեն նաեւ հաջորդական եւ տարրական, քանի որ Ի հիշատակ համակարգչի, զանգվածի տարրերը տեղակայված են անընդմեջ բջիջներում:

Հիշողության մեջ պասկալի երկչափ զանգվածի ներկայացում

Վերացական զանգվածի տարրերը մեքենայի հիշողության մեջ ֆիզիկապես գտնվում են հաջորդականորեն, ըստ նկարագրության: Այս դեպքում յուրաքանչյուր տարր հիշատրում է իր չափսերին համապատասխան բայթերի քանակը: Օրինակ, եթե զանգվածը բաղկացած է թիվ տարրերից, ապա յուրաքանչյուր տարր կզբաղեցնի երկու բայթ: Եվ ամբողջ զանգվածը կվերցնի S ^ 2 բայթ, որտեղ S- ների քանակն է զանգվածի մեջ:

Եվ որքան տեղ է տեղի ունենալու զանգված, որը բաղկացած է զանգվածներից, այսինքն: Մատրիցան: Ակնհայտ է, որ S I ^ s J, որտեղ ես եմ տողերի քանակը, եւ S J- ն յուրաքանչյուր շարքի իրերի քանակն է: Օրինակ, տիպի մի շարք

Matrix \u003d ամբողջ թվերի զանգված;

Այն կտեւի 12 հիշողություն բայթ:

Ինչպես են տեղակայվելու այս զանգվածի տարրերը հիշողության մեջ: Դիտարկենք Matrix Matrix- ի զանգվածը հիշողության մեջ:

Յուրաքանչյուր Element M տիպի ամբողջականության ներքո կարեւորվում է երկու հիշողության բջիջ: Հիշողության տեղավորումն իրականացվում է «ներքեւից վեր»: Տարրերը տեղադրվում են ցուցանիշը փոխելու կարգով, որը համապատասխանում է կից ցիկլերի սխեմային. Նախ, առաջին գիծը տեղադրված է, ապա երկրորդ, երկրորդը `երկրորդը, երկրորդը եւ այլն

Ինչպես գիտենք, ցանկացած փոփոխականի հասանելիություն հնարավոր է միայն այն դեպքում, եթե հայտնի է հիշողության խցիկի հասցեն, որում պահվում է փոփոխականը: Հատուկ հիշողությունը տրամադրվում է փոփոխականի համար `ծրագիրը բեռնելու դեպքում, այսինքն, փոփոխականի փոխադարձ նամակագրություն է սահմանված փոփոխականի եւ բջջային հասցեի միջեւ: Բայց եթե մենք հայտարարեցինք փոփոխական, որպես զանգված, «գիտի» զանգվածի սկիզբը, այսինքն, նրա առաջին տարրը: Ինչպես է տեղի ունենում զանգվածի բոլոր այլ տարրերի մուտքը: Հիշողության բջիջ իրական մուտքով, որում պահվում է երկչափ զանգվածի տարրը, համակարգը իր հասցեն է հաշվարկում բանաձեւով.

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

որտեղ Addr- ը իրական նախնական հասցե է, որով զանգվածը գտնվում է հիշողության մեջ. I, J - Element ցուցանիշներ երկչափ զանգվածով. Erepelem - զանգվածի տարրերի չափը (օրինակ, ամբողջ թվով տարրերի համար երկու բայթ); Cols - շարքում իրերի քանակը:

Արտահայտությունը չափել է * Cols * (i -1) + iseSelem * (j -1) կոչվում է տեղահանում `մետաղի սկզբի համեմատ:

Որքան հիշողություն է հատկացվում զանգվածի համար:

Դիտարկենք այնքան հարց, թե որքան հիշողություն է հատկացվում զանգվածի համար (մենք բաժանվել ենք նախորդ բաժնում), բայց որն է զանգվածի առավելագույն թույլատրելի չափը, հաշվի առնելով սահմանափակ քանակությունը:

Ծրագիրը աշխատելու համար հիշողությունը յուրաքանչյուրը 64 KB հատվածներ է հատկացվում, որոնցից առնվազն մեկը սահմանվում է որպես Տվյալների հատված, Այստեղ այս հատվածում եւ կան այդ տվյալները, որոնք ծրագիրը կընթանա: Ոչ մի փոփոխական ծրագիր չի կարող տեղակայվել մեկից ավելի հատվածում: Հետեւաբար, նույնիսկ եթե միայն մեկ փոփոխականը նկարագրված է հատվածի մեջ, այն չի կարողանա ստանալ ավելի քան 65536 բայթ: Բայց գրեթե հաստատ, տվյալների սեգմենտում զանգվածից բացի, նկարագրվելու են եւս մի քանի փոփոխականներ, ուստի հիշողության փաստացի քանակը բանաձեւում է. 65536- վ-ն է Հիշողության արդեն ընտրված այլ փոփոխականների համար:

Ինչու պետք է դա իմանանք: Որպեսզի չզարմանալ, եթե թարգմանիչը սխալ հաղորդագրություն կտա չափազանց երկար զանգվածի հայտարարությանը, երբ ծրագիրը մտնում է ծրագրում (ճիշտ է շարահյուսության տեսանկյունից).

Մուտքագրեք myarray \u003d ամբողջ թվերի զանգված;

Դուք արդեն գիտեք, որ հաշվի առնելով ամբողջ թվերի երկկողմանի ներկայացուցչությունը, իրատեսական է զանգվածի հայտարարագրումը 65536/2 -1 \u003d 32767 հավասար տարրերի քանակի մասին: Եվ հետո միայն այն դեպքում, եթե այլ փոփոխականներ չկան: Երկչափ զանգվածները պետք է ունենան նույնիսկ ավելի փոքր ինդեքս սահմաններ:

Պասկալի երկչափ զանգվածի հետ կապված խնդիրների լուծման օրինակներ

Առաջադրանք. Գտեք մատրիցայի ոչ զրոյական տարրերի արտադրանք:

Որոշում.

  • Այս առաջադրանքը լուծելու համար մեզ անհրաժեշտ կլինեն փոփոխականներ. Matrix, որը բաղկացած է, օրինակ, ամբողջական տարրերից. P- ը 0-ից այլ տարրերի արդյունք է. I, J - Array ցուցանիշներ; N, M - մատրիցում տողերի եւ սյուների քանակը:
  • Մուտքագրման տվյալները N, M - դրանց արժեքները մուտքագրեք ստեղնաշարից. Matrix - Matrix- ը մուտքագրելու համար `ընթացակարգի տեսքով` մատրիցը լրացնելը պատահականորեն կլինի, ես: Օգտագործելով պատահական () գործառույթը:
  • Արդյունքը կլինի փոփոխական P (աշխատանքի) արժեքը:
  • Ծրագրի ճիշտությունը ստուգելու համար անհրաժեշտ է մատրիցը դուրս գալ էկրանին, այս թողարկման համար Matrix- ի ելքային կարգը:
  • Խնդրի լուծման կարգը.

Մենք նախ կքննարկենք հիմնական ծրագրի կատարումը, մենք կքննարկենք ընթացակարգերի իրականացումը մի փոքր ավելի ուշ.

  • Ներկայացնում ենք N- ի եւ M- ի արժեքները.
  • Մենք ներկայացնում ենք Պասկալի երկչափ զանգված, դրա համար մենք դիմում ենք VVOD (A) ընթացակարգին, որտեղ - մատրիցա;
  • Տպեք արդյունքում ստացված մատրիցը, դրա համար մենք դիմում ենք տպագիր ընթացակարգին (ա).
  • Մենք ներկայացնում ենք փոփոխականի սկզբնական արժեքը p \u003d 1;
  • Մենք հաջորդաբար դասավորելու ենք I- ի բոլոր տողերը 1-ից մինչեւ: 0, ապա Product p- ը `միաձուլման տարրերի մեջ` ij (p \u003d p * a ij).
  • Հետ վերցնել Matrix- ի Nonzero տարրերի արտադրանքի արժեքը. P;

Եվ հիմա եկեք խոսենք ընթացակարգերի մասին:

Մեկնաբանություն (դա կարեւոր է!) Ընթացակարգի պարամետրը կարող է լինել կանխորոշված \u200b\u200bտիպի ցանկացած փոփոխական, ինչը նշանակում է, որ զանգվածի ընթացակարգին որպես պարամետր փոխանցելու համար այն պետք է նկարագրվի նախապես: Օրինակ:

Տիպ
Matrix \u003d ամբողջ թվերի զանգված;
Ընթացակարգի նախնական (A: Matrix);
..............................

Եկեք հիմա վերադառնանք մեր ընթացակարգերին:

Matrix մուտքագրման կարգը կոչվում է VVOD, ընթացակարգի պարամետրը մատրիցն է, եւ այն արդյունքում պետք է փոխանցվի հիմնական ծրագրին, ապա պարամետրը պետք է փոխանցվի հղումով: Այնուհետեւ մեր ընթացակարգի վերնագիրը նման կլինի.

Կարգը VVOD (VAR M: Matrix);

Ընթացակարգի բույնի ցիկլերը իրականացնելու համար մեզ անհրաժեշտ են տեղական փոփոխականներ, օրինակ, K եւ H: Արդեն քննարկվել է մատրիցային լցոնման ալգորիթմը, այնպես որ մենք դա չենք կրկնի:

Էկրանի վրա մատրիցպի արտագնա կազմելու կարգը կոչվում է տպագիր, ընթացակարգի պարամետրը մատրիցն է, բայց այս դեպքում դա մուտքային պարամետր է, հետեւաբար, փոխանցվում է արժեքով: Այս ընթացակարգի վերնագիրը նման կլինի.

Ընթացակարգի տպագիր (M: Matrix);

Եվ կրկին, ընթացակարգի մեջ գտնվող բույն ցիկլերի իրականացման համար, մենք պետք է հաշվիչներ պետք է, թող նրանք դիմեն նույն - K եւ H: Էկրանի մատրիցի ելքի ալգորիթմը վերեւում նկարագրված էր, մենք օգտագործում ենք այս նկարագրությունը:

Pascal- ի երկչափ զանգվածի ծրագրի օրինակ

Ծրագիր proizvedenie;
Տիպ
Matrix \u003d ամբողջ թվերի զանգված;
Var.
A: Matrix;
N, մ, ես, J. Բայտ;
P: Ամբողջ
Կարգը VVOD (VAR M: Matrix);
Var k, h: byte;
Սկսել
Որովհետեւ ես. \u003d 1-ից n անել (ընթացակարգի համար փոփոխական) գլոբալ է, եւ, հետեւաբար, «հայտնի»)
For J. \u003d 1-ից M Do (M կարգի փոփոխականը գլոբալ է, ուստի «հայտնի»)
M: \u003d պատահական (10);
Վերջ;
Ընթացակարգի տպագիր (M: Matrix);
Var k, h: byte;
Սկսել
Որովհետեւ ես. \u003d 1-ից n անել
Սկսել
J. \u003d 1-ից m doo
Գրեք (M: 4);
Writeln;
վերջ;
Վերջ;
Սկիզբ (հիմնական ծրագրի սկիզբ)
Writeln ("Մուտքագրեք Matrix- ի չափը.");
Readln (N, M);
Vvod (a);
Տպել (ա);
P: \u003d 1;
Որովհետեւ ես. \u003d 1-ից n անել
J. \u003d 1-ից m doo
ԵԹԵ.<>0, ապա p: \u003d P * A;
Writeln (p);
Վերջ

Երկչափ զանգված Տվյալների կառուցվածքը, որը պահում է ձեւի ուղղանկյուն մատրիցը.

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

  • Matrix- ում յուրաքանչյուր տարր որոշվում է գծի համարով եւ սյունակի քանակով, որի խաչմերուկում է
  • Պասկալում երկչափ զանգվածը զննում է որպես զանգված, որոնց տարրերը գծային զանգվածներ են (զանգվածների զանգված): Երկկողմանի զանգվածների հետեւյալ երկու նկարագրությունները նույնական են var Mass. Real of Rea- ի զանգված; Var Mass: Real of Array;
  • Կոչվում է մատրիցա, որում տողերի քանակը հավասար է սյուների քանակին Քառակուսի մատրիցա.
  • Matrix տարրին հղելու համար դուք պետք է օգտագործեք երկու ցուցիչ, նշելով գծի համարը եւ սյունակի համարը: օրինակ Myarr1, Մեջ Այս դեպքը Զանգվածի տարրը (Myarr1) գտնվում է չորրորդ գծում եւ հինգերորդ սյունակում:
  • Այն ամենը, ինչ ասվում է մեկ ծավալային զանգվածներով հիմնական գործողությունների մասին, արդար է ինչպես մատրիցների համար: Տեղում գտնվող Masiva- ի միջոցով ցիկլում, ամբողջական թվով գործողություններ են գործում որպես ցուցանիշներ: Ավանդաբար, նույնականացումը »օգտագործվում է գծի ինդեքսը նշելու համար: Ես «Եւ սյուն» Ամբ. “.
  • Մատրիցայի վերամշակումը այն է, որ առաջին տողի (սյունակի) տարրերը նախեւառաջ համարվում են առաջինը, ապա երկրորդը եւ այլն:
  • Եթե \u200b\u200bտարրի տողի թիվը համընկնում է սյունակի համարի հետ ( i \u003d ժ.), սա նշանակում է, որ տարրը կայանում է Հիմնական անկյունագիծ Matrix
  • Եթե \u200b\u200bտարրը գտնվում է կողմնակի անկյունագծի վրա, ցուցանիշները կապված են տարրերի քանակի հետ ( Ն.) Հետեւյալ հավասարությունը. Ես + j \u003d n + 1

Երկկողմանի զանգվածի նկարագրությունը

Պասկալում երկչափ զանգվածի գովազդի (նկարագրությունների) մի քանի եղանակներ կան:

Զանգվածի տեսակի նախնական նկարագրություն

Type Matrix \u003d Ամբարի զանգված; (Ամբողջ ամբողջականության զանգված) var Mass: Matrix;

Փոփոխականի սահմանում որպես զանգված առանց զանգվածի տեսակի նկարագրության

Var Mass. Ամբողջական զանգված;

Երկկողմանի զանգվածի նախաստորագրում

Երկչափ զանգվածներ նախաձեռնելիս յուրաքանչյուր տող կլոր փակագծերի լրացուցիչ զույգ է.

Const Mass: Array \u003d ((2,3,1,0), (1,9,1,3), (3,5,7,0));

Երկկողմանի զանգվածի տարրերի արժեքների մուտքային / ելք

Շատ հաճախ զանգվածի տարրերի արժեքները մուտքագրվում են ստեղնաշարից: Տեղեկատվություն տեղադրելու այս եղանակը շատ ժամանակատար է զանգվածայինների հետ աշխատելիս: Մեծ չափեր, Ալգորիթմների լայն դասի կարգաբերում, տեղեկատվության նման գրառումը պետք է փոխարինվի զանգվածային տարրերի ձեւավորմամբ պատահականորեն: Դա անելու համար օգտագործեք ընթացակարգը Պատահականացնել: եւ գործառույթ Պատահական, Երկկողմանի զանգվածներով աշխատելիս օգտագործվում են բույնի ցիկլեր (սովորաբար ցիկլով պարամետրով Համար).

Զանգի պատահական համարներ լրացնելը

Const N \u003d 5; մ \u003d 10; Var i, J: Ամբողջ Matrix. Ամբողջ ամբողջական զանգված; Սկսեք պատահականացնել; Որովհետեւ ես. \u003d 1-ից n անել (զանգվածային շարքեր) j: \u003d 1 to m do (ավելացնելով տարրը սյունակներով) Matrix: \u003d Պատահական (100); (Մենք տեղադրում ենք ընթացիկ տարրի պատահական համարը միջակայքից. 4); Writeln (ներքին ցիկլից արտադրանքի նոր տողի) ավարտը.

Խնդիրների լուծման օրինակներ

Օրինակ 1.

Խնդրի ձեւակերպում: Տրվում են միջին դրական թվեր M եւ N:

Const M \u003d 7; n \u003d 10; Var I, J: Byte; Matrix. Ամբողջ ամբողջական զանգված; Սկսեք I- ի համար. \u003d 1-ից M foor j: \u003d 1 to n do matrix: \u003d 5 * J; ... (զանգվածի արտադրանքը)

Օրինակ 2.

Խնդրի ձեւակերպում: Տրված են միջին դրական թվեր M, N եւ M համարների շարք: Ձեւավորման Matrix- ի Matrix ձեւավորելու համար, որում յուրաքանչյուր սյուն պետք է պարունակում է բոլոր համարները աղբյուրի հավաքումից (նույն կարգով):

Const M \u003d 5; n \u003d 7; Վեկտոր, ամբողջ թվերի զանգված \u003d (3, 5, 2, 7, 4); Var I, J: Byte; Matrix. Ամբողջ ամբողջական զանգված; Սկսեք j: \u003d 1-ից n անել (մենք JTH սյունը վերցնում ենք) I- ի համար. \u003d 1-ից M Do (հասցնում է տողերի ժապավենի սյունակի տարրերը) Matrix. \u003d վեկտոր [i]; (իրականացում) ... (արդյունքում ստացված երկչափ զանգվածի արդյունքով)

Տնային աշխատանք

  1. Տրվում են միջին դրական թվեր M եւ N: Չափի ամբողջական մատրիցա ձեւավորելու համար, որը բոլոր տարրերը I-Th Row Նրանք ունեն 10 · I (i \u003d 1, ..., մ) արժեք:
  2. Տրվում են միջին դրական թվեր M, n եւ N համարների շարք: Չափի Matrix ձեւավորելու համար, որում յուրաքանչյուր տող պարունակում է բոլոր համարները աղբյուրի հավաքագրմամբ (նույն կարգով):
  3. Բացի այդ:Միջին դրական թվեր M, n, թիվ D- ն եւ M համարների շարքը տրվում են: Ձեւավորելու չափի M- ի Matrix- ը, որում առաջին սյունակը համընկնում է թվերի աղբյուրի հավաքածուի հետ, եւ յուրաքանչյուր հաջորդ սյունակի տարրերը հավասար են նախորդ սյունակի համապատասխան տարրի եւ Dames- ի (ինչպես Արդյունք, մատրիցայի յուրաքանչյուր տող պարունակում է թվաբանական առաջընթացի տարրեր):
  4. Բացի այդ:Տրված է չափի Matrix- ը: Display ուցադրել դրա տարրերը, որոնք տեղակայված են նույնիսկ թվերով գծերով (2, 4, ...): Տարրերի արդյունքը կատարվում է գծերով, պայմանական օպերատորը չի օգտագործում: