როგორც პასკალში, გააცნობიეროს მატრიცა. ორი განზომილებიანი პასკალური მასივები - მატრიცა

ბოლო გაკვეთილი პასკალი 7 მარტს დაიწერა, მაშინ ჩვენ დაიშალა. დღეს ვსწავლობთ რა ორი განზომილებიანი მასივი პასკალშიროგორ არის აღწერილი და ის, რაც მას წარმოადგენს. დაწვრილებით.

ასე რომ, რა არის ორგანზომილებიანი მასივი?სინათლის აღქმა, ჩვენ წარმოვიდგენთ ერთი განზომილებიანი მასივი, როგორც ხაზი, და რომელიც ყველა ელემენტს ჰორიზონტალურად და ორ განზომილებაში, როგორც მოედანზე, რომელშიც ელემენტები მდებარეობს ჰორიზონტალურად და ვერტიკალურად. ორ განზომილებიანი მასივი შედგება ხაზებისა და სვეტებისგან, მათ ასევე მოუწოდა მატრიქსის ან მატრიქსის მასივი.

როგორ არის ორი განზომილებიანი მასივები? ორი განზომილებიანი მასივების დასაწერად რამდენიმე გზაა, მე 2 მათგანს განიხილავს.

1 მეთოდი აღწერილობა მასივი: მასივის ტიპის ცვლადების მასივი (რიცხვი / რეალური / ბაიტი);

2 მეთოდი აღწერს მასივის: მასივის ტიპის ტიპის მასივის მასივი;

პირველი აღწერს ხაზებს (1.. მ), შემდეგ კი სვეტები (1..N).

მეორე მეთოდით, აღწერილია, თითქოს ორი განზომილებიანი მასივი, რომელიც ერთმანეთთან ერთად ქმნის ორ განზომილებას.

ორ განზომილებიანი მასივი შეიძლება აღინიშნოს ტიპის განყოფილებაში რამდენიმეჯერ რამდენჯერმე ან VAR- ის ცვლადი აღწერილობაში, მინდა ყურადღება მიაქციოთ M და N- ს ნაცვლად, შეგიძლიათ გამოიყენოთ ნომრები და შეგიძლიათ გამოიყენოთ მუდმივები .

მაგალითი ორ განზომილებიანი მასივი სამუშაო ცვლადი აღწერილობების განყოფილებაში:

კონს.
m \u003d 100;
n \u003d 100;
var.
A: რიცხვის მასივი;

ამ შემთხვევაში, 100-ზე მეტი 100-ის ორ განზომილებიანი მასივი ვამზადებთ, ეს არის კვადრატული მატრიცა.

მაგალითი მატრიცა მასივი ტიპის სექციის გამოყენებით:

კონს.
m \u003d 100;
n \u003d 100;
ბეჭდვა
Matrix \u003d რიცხვის მასივი;
var.
A: მატრიცა;
B: მატრიცა;

მეორე მაგალითზე, ჩვენ ორი იდენტური მატრიცის მასივი 100-ზე 100-ზე მეტია, როდესაც მასივის აღწერისას, ჩვენ არ უნდა აღწერო მისი ზომა და მონაცემთა ტიპი.

როგორ მივიღოთ საკანში ცვლადი ორგანზომილებიანი მასივი?

ორი განზომილებიანი მასივის მიმართ, თქვენ უნდა მიუთითოთ ნომრის ნომერი პირველი და შემდეგ სვეტის ნომერი შემდეგნაირად:

x- ნებისმიერი ცვლადი, A - Array სახელი, ხაზი I- ნომერი, J - სვეტის ნომერი.

უფრო მეტიც, მე და J შეიძლება იყოს ორივე ცვლადები და რიცხვები.

მაგალითი მასივის მონაცემების წერის მაგალითზე:

მე: \u003d 1 to n გავაკეთოთ // ამოცანა ხაზი loop
J: \u003d 1-დან M გავაკეთოთ / / ამოცანა სვეტის ნომრის ციკლში
A: \u003d შემთხვევითი (100); / / მობილური ტელეფონის ნომერი I და შემთხვევითი სვეტის ნომერი

ჩვენ შევსებული მასივი შემთხვევითი რიცხვებით 1-დან 100-მდე.

მაგალითი პროგრამის გამოყენებით ორგანზომილებიანი მასივი, რომელშიც ჩვენ შეავსოთ მასივი შემთხვევითი ნომრები და აჩვენებს მას ეკრანზე:

Var // ცვლადებისა და მასივის აღწერა
მატრიქსი: რიცხვის მასივი;
I, J: მთელი რიცხვი;

დასაწყისი // მთავარი პროგრამა
Writeln ("ორგანზომილებიანი მასივი:"); // დიალოგი მომხმარებლისთან

I: \u003d 1-დან 10-მდე // მასივის შევსება
J: \u003d 1-დან 10-მდე
Matrix: \u003d შემთხვევითი (100);

მე: \u003d 1-დან 10-მდე დაიწყე / / მასივის გამომავალი
J: \u003d 1-დან 10-მდე
დაწერეთ (მატრიცა ",");
Writeln.
Writeln ("საიტი"); / / თუ გსურთ, შეგიძლიათ წაშალოთ
დასასრული; / / პროგრამის დასასრული

// Readln // გამოიყენება Turbo Pascal

პასკალში ორ განზომილებიანი მასივი განიხილება, როგორც ერთი განზომილებიანი მასივი, რომელთა ელემენტებიც არის მასივი (მასივი მასივი). ორი განზომილებიანი პასკალური მასივების ელემენტების პოზიცია აღწერილია ორი ინდექსით. ისინი შეიძლება წარმოდგენილი იყოს როგორც მართკუთხა მაგიდა ან მატრიცა.

განვიხილოთ პასკალზე ორი განზომილებიანი მასივი 3 * 3 განზომილებით, ეს იქნება სამი ხაზი, და თითოეულ ხაზში სამი ელემენტი:

თითოეულ ელემენტს აქვს საკუთარი რიცხვი, ისევე როგორც ერთი განზომილებიანი მასივები, მაგრამ ახლა უკვე ორი რიცხვი შედგება ორი ნომრისგან - ხაზის ნომრები, რომელშიც ელემენტი მდებარეობს და სვეტის რიცხვი. ამდენად, ელემენტის ნომერი განისაზღვრება სიმებიანი და სვეტის გადაკვეთის გზით. მაგალითად, 21 არის მეორე ხაზი და პირველი სვეტში.

პასკალზე ორი განზომილებიანი მასალის აღწერა.

პასკალზე ორი განზომილებიანი მასივისთვის რამდენიმე გზა არსებობს.

ჩვენ უკვე ვიცით, თუ როგორ უნდა აღწეროთ ერთი განზომილებიანი მასივები, რომელთა ელემენტები შეიძლება ჰქონდეს რაიმე ტიპის, და, შესაბამისად, ელემენტები შეიძლება იყოს მასრები. განვიხილოთ ტიპებისა და ცვლადების შემდეგი აღწერა:

მაგალითად, პასკალზე ორ განზომილებიანი მასალის აღწერა

ბეჭდვა
ვექტორი \u003d მასივი<тип_элементов>;
Matrix \u003d ვექტორული მასივი;
Var m: matrix;

ჩვენ გამოვაცხადეთ პასკალ მ-ის ორ განზომილებიანი მასივი, რომელიც შედგება 10 ხაზისგან, რომელთაგან თითოეული 5 სვეტი. ამ შემთხვევაში, M [I] შეიძლება ხელმისაწვდომი იყოს თითოეული I (I] და თითოეული J არის ელემენტის შიგნით I-TH row - M [I, J].

ორი განზომილებიანი პასკალური მასალის ტიპების განმარტება შეიძლება ასევე ერთ ხაზზე იყოს მითითებული:

ბეჭდვა
Matrix \u003d მასივის მასივი< тип элементов >;
ან უფრო ადვილია:
ბეჭდვა
Matrix \u003d მასივი<тип элементов>;

მიმართეთ ორ განზომილებიანი მასივის ელემენტებს ფორმა: მ [მე, ჯ]. ეს იმას ნიშნავს, რომ ჩვენ გვინდა, რომ I-R ზედიზედ და J-Column- ში მდებარე ელემენტს მივიღოთ. აქ მთავარია, რომ არ გაურკვეველი რიგები სვეტებთან ერთად, წინააღმდეგ შემთხვევაში ჩვენ კვლავ შეგვიძლია მივიღოთ საჩივარი არარსებული ელემენტისთვის. მაგალითად, M ელემენტის მიმართვა სწორი შესვლის ფორმაა, მაგრამ შეიძლება გამოიწვიოს შეცდომა პროგრამაში.

ძირითადი ქმედებები პასკალზე ორ განზომილებიანი მასალის მქონე

ყველაფერი, რაც ითქვა, ძირითადი ქმედებები ერთი განზომილებიანი მასივები არის სამართლიანი როგორც მატრიცები. ერთადერთი ქმედება, რომელიც შეიძლება განხორციელდეს იმავე ტიპის მატრიცებზე, არის დავალება. იმ შემთხვევაში, თუ ჩვენ გვყავს ორი მატრიცები ერთი ტიპის პროგრამაში, მაგალითად,

ბეჭდვა
Matrix \u003d რიცხვის მასივი;
var.
A, B: მატრიცა;

შემდეგ პროგრამის შესრულებისას შეგიძლიათ Matrix- ის მინიჭება ა. მატრიცის ღირებულება ბ. (A: \u003d B). ყველა სხვა ქმედება ხორციელდება მონაცვლეობით, ყველა დასაშვები ოპერაციისთვის, რომლებიც განისაზღვრება მასივის ელემენტების მონაცემთა ტიპისთვის. ეს იმას ნიშნავს, რომ თუ მასივი შედგება რიცხვებისგან, რიცხვებისთვის განსაზღვრული ოპერაციები შეიძლება შესრულდეს მის ელემენტებზე, თუ მასივი სიმბოლოებისგან შედგება, სიმბოლოების მუშაობისთვის განსაზღვრული ოპერაციები.

შეიყვანეთ ორ განზომილებიანი მასივი პასკალი.

ერთი განზომილებიანი მასივის ელემენტების თანმიმდევრული შეყვანისთვის, ჩვენ ვიყენეთ ციკლი, რომელმაც შეცვალა ინდექსის ღირებულება 1-დან ამ უკანასკნელისგან. მაგრამ პასკალზე ორ განზომილებიანი მასალის ელემენტის პოზიცია განისაზღვრება ორი ინდექსით: ხაზის ნომერი და სვეტის ნომერი. ეს იმას ნიშნავს, რომ ჩვენ უნდა დაგჭირდეთ თანმიმდევრულად შეცვალოს ხაზი 1-დან უკანასკნელ და თითოეულ ხაზში, რათა სვეტების ელემენტების დასალაგებლად პირველი ამ უკანასკნელისგან. ასე რომ, ჩვენ გვჭირდება ორი ციკლი, და ერთი მათგანი იქნება ინვესტიცია სხვა.

განვიხილოთ მაგალითი ორ განზომილებიანი მასივის პასკალზე შესასვლელად კლავიატურაზე:

პასკალის ორ განზომილებიანი მასალის შეყვანის მაგალითი კლავიატურაზე

ბეჭდვა
Matrix \u003d რიცხვის მასივი;
var.
A, Matrix;
I, J: მთელი რიცხვი; (მასივი ინდექსები)
დასაწყისი.
მე: \u003d 1-დან 5-მდე (ციკლი ყველა ხაზის ბიუსტით)
Readln ([I, J]); (I-R ზედიზედ და J-Column- ში კლავიატურის ელემენტის შეყვანა)

ორი განზომილებიანი პასკალური მასივი შეიძლება შევსებული შემთხვევით, ანუ. გამოიყენეთ შემთხვევითი (N) ფუნქცია, ასევე თითოეული მატრიქსის ელემენტის ზოგიერთი გამოხატვის მნიშვნელობა. ორი განზომილებიანი პასკალური მასივის შევსების მეთოდი შერჩეულია ამოცანების მიხედვით, მაგრამ ნებისმიერ შემთხვევაში თითოეული ელემენტი უნდა განისაზღვროს თითოეულ რიგში და თითოეული სვეტი.

ეკრანზე ორ განზომილებიანი მასივის პასკალის გამომავალი.

პასკალს ორი განზომილებიანი მასალის ელემენტების გამომავალი ასევე ხორციელდება სერია, აუცილებელია თითოეული რიგის ნივთები და თითოეული სვეტი. ამავე დროს, მინდა, რომ ერთ ხაზზე დავდგეთ ელემენტები, ნაბეჭდი მიმდებარე, ი.ა. სიმებიანი და სვეტის ელემენტები სხვა ქვემოთ მოყვანილი იყო. ამისათვის თქვენ უნდა შეასრულოს ქმედებების შემდეგი თანმიმდევრობა (განვიხილოთ პროგრამის ფრაგმენტი წინა მაგალითში აღწერილი მასივისთვის):

პასკალზე ორ განზომილებიანი მასალის გამომავალი პროგრამის მაგალითი

მე: \u003d 1-დან 5-მდე (ციკლი ყველა ხაზის ბიუსტით)
დასაწყისი.
J: \u003d 1-დან 10-მდე (ბიუსტი სვეტების ყველა ელემენტის შესახებ)
დაწერეთ ([i, j]: 4); (ბეჭდვის ელემენტები Matrix- ის მე -2 რიგის რიგში ერთ ეკრანზე და 4 პოზიციაზე მოცემულია თითოეული ელემენტის გამომუშავება)
Writeln; (მატრიცის ხაზის შეცვლის დაწყებამდე თქვენ უნდა თარგმნოთ კურსორი ახალი ეკრანის რიგის დასაწყისში)
დასასრული;

კომენტარი ( ეს არის მნიშვნელოვანი!): ძალიან ხშირად სტუდენტთა პროგრამებში შეექმნა შეცდომა, როდესაც შესვლის კლავიატურის ან გამომავალი მასივი ეკრანზე ცდილობს შემდეგნაირად: Readln (A), Writeln (A), სადაც მაგრამ - ეს არის გაცნობის ცვლადი მასივი. ამავდროულად, ისინი გაოცებულნი არიან შემდგენელი გზავნილის მიერ, რომ ამ ტიპის ცვლადი არ შეიძლება ჩაითვალოს ან დაბეჭდოს. იქნებ გესმით, რატომ არ შეიძლება ეს არ მოხდეს, თუ თქვენ მოგაწვდით ზედიზედ ზედიზედ და თქვენს ხელშია, მაგალითად, კეტელი წყლით. შეგიძლიათ გუნდში "წყალი" შეავსოთ ყველა წრეზე? არ აქვს მნიშვნელობა, თუ რამდენად რთულია თქვენ ცდილობენ, მაგრამ თითოეულ mug თქვენ უნდა დაასხით ცალკე. მასივის ელემენტების ეკრანზე შევსება და გამომავალი უნდა განხორციელდეს თანმიმდევრულად და ელემენტებით, რადგან კომპიუტერის მეხსიერებაში, მასივის ელემენტები განლაგებულია ზედიზედ უჯრედებში.

მეხსიერებაში ორი განზომილებიანი მასალის პრეზენტაცია

აბსტრაქტული მასივის ელემენტები მანქანების ხსოვნას ფიზიკურად განლაგებულია, აღწერილობის მიხედვით. ამ შემთხვევაში, თითოეული ელემენტი იღებს მეხსიერებას მისი ზომა, რომელიც შეესაბამება მის ზომას. მაგალითად, თუ მასივი შეიცავს მთელი რიცხვების ელემენტებს, მაშინ თითოეული ელემენტი ორ ბაიტს დაიკავებს. და მთელი მასივი მიიღებს S ^ 2 bytes, სადაც S არის რაოდენობის ელემენტები მასივი.

და რამდენი სივრცე მოხდება მასივი, რომელიც შედგება მასივებისგან, ანუ. მატრიცა? ცხადია: I ^ s J, სადაც მე ვარ რიგების რიცხვი, და S J არის რაოდენობის ელემენტი თითოეულ რიგში. მაგალითად, ტიპის მასივი

Matrix \u003d რიცხვის მასივი;

ეს მიიღებს 12 მეხსიერების ბაიტს.

როგორ იქნება ამ მასივის ელემენტები მეხსიერებაში? განვიხილოთ Matrix Matrix Array მეხსიერებაში.

თითოეული ელემენტის M ტიპის რიცხვის მიხედვით, ორი მეხსიერების უჯრედები ხაზს უსვამენ. მეხსიერების განთავსება ხორციელდება "ქვედა up". ელემენტები მოთავსებულია ინდექსის შეცვლის მიზნით, რომელიც შეესაბამება თანდართულ ციკლის სქემას: პირველი, პირველი ხაზი მოთავსებულია, მაშინ მეორე, მესამე ... ხაზის შიგნით არის ელემენტები: პირველი, მეორე და ა.შ.

როგორც ვიცით, ნებისმიერი ცვლადის ხელმისაწვდომობა შესაძლებელია მხოლოდ იმ შემთხვევაში, თუ მეხსიერების უჯრედის მისამართი ცნობილია, სადაც ცვლადი ინახება. სპეციფიკური მეხსიერება გამოყოფილია პროგრამის ჩატვირთვისას ცვლაზე, ანუ ცვლადისა და უჯრედის მისამართით ორმხრივი კორესპონდენცია. მაგრამ თუ ჩვენ გამოვაქვეყნეთ ცვლადი, როგორც მასივი, პროგრამა "იცის" დასაწყისში მასივის დასაწყისში, ეს არის მისი პირველი ელემენტი. როგორ ხდება მასივის ყველა სხვა ელემენტის ხელმისაწვდომობა? მეხსიერების უჯრედის რეალური წვდომით, რომელშიც ორი განზომილებიანი მასივის ელემენტი ინახება, სისტემა ითვლის მის მისამართს ფორმულით:

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

სადაც Addr არის ფაქტობრივი საწყის მისამართი, რომელიც მასივი მდებარეობს მეხსიერებაში; მე, J - ელემენტის ინდექსები ორ განზომილებიანი მასივით; ზომა - მასივის ელემენტის ზომა (მაგალითად, ორი ბაიტი ინტეგრირებული ელემენტებისათვის); Cols - რიგი ელემენტი ზედიზედ.

გამოხატვის ზომა * Cols * (I -1) + Seetelem * (J-1) ეწოდება გადაადგილების დაწყებას მასივის დასაწყისში.

რამდენი მეხსიერება გამოყოფილია მასივისთვის?

განვიხილოთ არა იმდენად საკითხი, თუ რამდენი მეხსიერება გამოყოფილია მასივისთვის (წინა სექციაში დაგვყოფთ), მაგრამ რა არის მაქსიმალური დასაშვები ზომა მასივის შეზღუდული რაოდენობით.

პროგრამის დასაქმების მიზნით, მეხსიერება 64 კბ-ს სეგმენტებს ათავსებს, მინიმუმ ერთი მათგანი განისაზღვრება მონაცემთა სეგმენტი. აქ ამ სეგმენტში და არსებობს ეს მონაცემები, რომლებიც პროგრამას აწარმოებს. ცვლადი პროგრამა შეიძლება განთავსდეს ერთზე მეტ სეგმენტში. აქედან გამომდინარე, მაშინაც კი, თუ მხოლოდ ერთი ცვლადი აღწერილია, როგორც მასივი მდებარეობს სეგმენტში, მას ვერ შეძლებს მეტი 65536 ბაიტი. მაგრამ თითქმის რა თქმა უნდა, მონაცემთა სეგმენტში მასივის გარდა, კიდევ რამდენიმე ცვლადი იქნება აღწერილი, ამიტომ მეხსიერების ფაქტობრივი ოდენობა, რომელიც შეიძლება შერჩეული იყოს მასივში, არის ფორმულა: 65536- ს, სადაც არის თანხა მეხსიერების უკვე შერჩეული სხვა ცვლადები.

რატომ უნდა ვიცოდეთ ეს? იმისათვის, რომ არ გაგიკვირდეთ, თუ თარჯიმანი საშუალებას მისცემს შეცდომის გაგზავნა ძალიან გრძელ მასივის დეკლარაციას, როდესაც პროგრამა პროგრამაში მოდის (სწორია სინტაქსის თვალსაზრისით):

ტიპი Myarray \u003d რიცხვის მასივი;

თქვენ უკვე იცით, რომ ორი-ბიტიანი წარმომადგენლობის რიცხვებით, რეალისტურია, რომ გამოაცხადოს მასივი 65536/2 -1 \u003d 32767-ის ელემენტების რაოდენობით. და მაშინ მხოლოდ იმ შემთხვევაში, თუ არ არსებობს სხვა ცვლადები. ორ განზომილებიანი მასივები უნდა ჰქონდეს პატარა ინდექსის საზღვრებს.

პასკალს ორ განზომილებიანი პრობლემების მოგვარების მაგალითები

Დავალება: იპოვეთ მატრიცის ნულოვანი ელემენტების პროდუქტი.

გადაწყვეტილება:

  • ამ ამოცანის გადასაწყვეტად, ჩვენ გვჭირდება ცვლადები: მატრიცა, რომელიც შედგება, მაგალითად, რიცხვითი ელემენტებისგან; P არის ელემენტების პროდუქტი, გარდა 0; მე, J - Array indices; N, M - მატრიცის რიგების რაოდენობა და სვეტების რაოდენობა.
  • შეყვანის მონაცემები არის N, M - მათი ღირებულებები შეიყვანეთ კლავიატურაზე; მატრიცა - Matrix- ის შესასვლელად პროცედურის სახით, მატრიქსის შევსება შემთხვევით, I.E. შემთხვევითი (ფუნქციის გამოყენებით.
  • გამომავალი იქნება ცვლადი P (სამუშაო) ღირებულება.
  • პროგრამის სისწორის შესამოწმებლად აუცილებელია მატრიქსის ეკრანზე გამომავალი, ამ საკითხზე მატრიქსის გამომავალი პროცედურა.
  • პრობლემის გადაწყვეტის პროცედურა:

ჩვენ პირველად განვიხილავთ ძირითად პროგრამას, ჩვენ განვიხილავთ პროცედურების განხორციელებას ცოტა მოგვიანებით:

  • ჩვენ გავითვალისწინებთ N და M ღირებულებებს;
  • ჩვენ გავაგრძელებთ პასკალს ორ განზომილებულ მასალას, ამისათვის ჩვენ მივმართავთ პროცედურის VVOD (A), სადაც - მატრიცა;
  • ამობეჭდოთ მატრიცა, ამისათვის ჩვენ მივმართავთ ბეჭდვის პროცედურას (ა);
  • ჩვენ მივცემთ ცვლადი P \u003d 1-ის საწყის ღირებულებას;
  • ჩვენ თანმიმდევრულად დალაგებთ ყველა რიგის მე 1-დან N- სგან, თითოეულ ხაზზე, ჩვენ ყველა სვეტში გადავცემთ ყველა სვეტისგან 1-დან M -TO- სგან, Matrix- ის თითოეული ელემენტისთვის ჩვენ შეამოწმებთ მდგომარეობას: თუ IJ? 0, მაშინ პროდუქტი p არის შერწყმა შევიდა ელემენტს IJ (P \u003d P * IJ);
  • Matrix - P- ის nonzero ელემენტების პროდუქტის გამოტანა;

ახლა მოდით ვისაუბროთ პროცედურებზე.

კომენტირება (ეს არის მნიშვნელოვანი!) პროცედურის პარამეტრი შეიძლება იყოს წინასწარ განსაზღვრული ტიპის ნებისმიერი ცვლადი, რაც იმას ნიშნავს, რომ პარამეტრის სახით მასივის პროცედურის გადაცემა, წინასწარ უნდა აღინიშნოს. Მაგალითად:

ბეჭდვა
Matrix \u003d რიცხვის მასივი;
პროცედურის პრაიმერი (A: Matrix);
..............................

მოდით დავუბრუნდეთ ახლა ჩვენს პროცედურებს.

მატრიქსის შეყვანის პროცედურა ეწოდება VVOD- ს, პროცედურის პარამეტრს წარმოადგენს მატრიცა და ეს უნდა იყოს, რის შედეგადაც ძირითადი პროგრამა გადაეცემა, ამიტომ პარამეტრს უნდა გადაეცეს მითითებით. მაშინ ჩვენი პროცედურის სათაური გამოიყურება ასე:

პროცედურა vvod (var m: matrix);

პროცედურაში წყობილი ციკლების განხორციელება, ჩვენ გვჭირდება ადგილობრივი ცვლადები, მაგალითად, K და H. ალგორითმის შევსების მატრიცა უკვე განიხილება, ამიტომ ჩვენ არ გავიმეორებთ მას.

ეკრანზე მატრიქსის გამოსწორების პროცედურა ეწოდება ბეჭდვას, პროცედურის პარამეტრს წარმოადგენს მატრიცა, მაგრამ ამ შემთხვევაში ეს არის შეყვანის პარამეტრი, ამიტომ, გადაცემულია ღირებულებით. ამ პროცედურის სათაური გამოიყურება ასე:

პროცედურა ბეჭდვა (მ: მატრიცა);

და ისევ, პროცედურის ფარგლებში წყობილი ციკლის განხორციელებისათვის, ჩვენ გვჭირდება მრიცხველები, მათ იმავე - კ. ეკრანზე მატრიცის გამომავალი ალგორითმი აღწერილია ზემოთ აღწერილი, ჩვენ ამ აღწერილობას ვიყენებთ.

მაგალითად პასკალზე ორ განზომილებიანი მასივის პროგრამის მაგალითი

პროგრამა Proizvedenie;
ბეჭდვა
Matrix \u003d რიცხვის მასივი;
Var.
A: მატრიცა;
N, M, I, J: Byte;
P: რიცხვი;
პროცედურა vvod (var m: matrix);
V var k, h: byte;
დასაწყისი.
მე: \u003d 1 to n do (ცვლადი n პროცედურა არის გლობალური, და ამიტომ "ცნობილია")
J: \u003d 1-დან M- სთვის (პროცედურის ცვლადი გლობალური, და ამიტომ "ცნობილია")
M: \u003d შემთხვევითი (10);
Დასასრული;
პროცედურა ბეჭდვა (მ: მატრიცა);
V var k, h: byte;
დასაწყისი.
მე: \u003d 1 to n გავაკეთოთ
დასაწყისი.
J: \u003d 1 to M Doo
დაწერეთ (მ: 4);
Writeln;
დასასრული;
Დასასრული;
დასაწყისი (მთავარი პროგრამა დაწყება)
Writeln ("შეიტანეთ Matrix- ის განზომილება:");
Readln (N, M);
Vvod (a);
ბეჭდვა (ა);
P: \u003d 1;
მე: \u003d 1 to n გავაკეთოთ
J: \u003d 1 to M Doo
ᲗᲣ.<>0 შემდეგ P: \u003d P * A;
Writeln (P);
Დასასრული.

ორი განზომილებიანი მასივი მონაცემთა სტრუქტურა ფორმის მართკუთხა მატრიქსის შენახვისათვის:

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

  • Matrix- ში, თითოეული ელემენტი განისაზღვრება ხაზის ნომრით და სვეტის რიცხვებით, რომლის გადაკვეთაზეც არის
  • პასკალში, ორ განზომილებიანი მასივი განიხილება როგორც მასივი, რომელთა ელემენტები ხაზოვანი მასივები (მასივის მასივები). ორი განზომილებიანი მასივის ორი აღწერილობა იდენტურია var მასა: რეალობის მასივის მასივი; Var მასა: რეალობის მასივი;
  • მატრიცა, რომელშიც რიგების რაოდენობა ტოლია სვეტების რაოდენობის მიხედვით კვადრატული მატრიცა.
  • მატრიქსის ელემენტის მიმართ, თქვენ უნდა გამოიყენოთ ორი ინდექსი, რომელიც მითითებულია ხაზის ნომრისა და სვეტის ნომერზე. მაგალითად Myarr1. -ში ეს საქმე მასივის ელემენტი (MyArr1) არის მეოთხე ხაზი და მეხუთე სვეტი.
  • ყველაფერი, რაც ითქვა, ძირითადი ქმედებები ერთი განზომილებიანი მასივები არის სამართლიანი როგორც მატრიცები. ერთად შტამპი Masiva ციკლი, ცვლადების რიცხვი, როგორც ინდექსები. ტრადიციულად, იდენტიფიკატორი "გამოიყენება ხაზის ინდექსის მითითებით. ᲛᲔ. "და სვეტი -" ჯ. “.
  • მატრიცის დამუშავება ისაა, რომ პირველი ხაზის (სვეტის) ელემენტები პირველ რიგში პირველად განიხილება, მეორე კი და ა.შ.
  • თუ ელემენტის რიგის რიცხვი ემთხვევა სვეტის ნომერს ( i \u003d j.), ეს იმას ნიშნავს, რომ ელემენტს მდგომარეობს მთავარი დიაგონალი მატრიცა.
  • თუ ელემენტი მდებარეობს მხარეს დიაგონალზე, ინდექსები დაკავშირებულია ელემენტების რაოდენობასთან ( ნ.) შემდეგი თანასწორობა: i + j \u003d n + 1

ორი განზომილებიანი მასივის აღწერა

პასკალში ორი განზომილებიანი მასივის რამდენიმე გზა არსებობს.

მასივის ტიპის წინასწარი აღწერა

ტიპი Matrix \u003d რიცხვის მასივი; (მასივი რიცხვები) Var მასა: მატრიცა;

ცვლადის განმარტება, როგორც მასივის ტიპის წინასწარი აღწერის გარეშე

Var მასა: რიცხვის მასივი;

ორმხრივი მასივის ინიციალიზაცია

ორ განზომილებიანი მასივების დაწყებისას თითოეული სიმებიანი არის დამატებითი წყვილი მრგვალი ფრჩხილებში:

კონსტრუქცია მასა: array \u003d ((2,3,1,0), (1,9,1,3), (3.5,7,0));

ორ განზომილებიანი მასივის ელემენტების ღირებულებების შეყვანა / გამომავალი

ძალიან ხშირად, მასივის ელემენტების ღირებულებები კლავიატურაზე შედის. ეს გზა შექმნის ინფორმაციას ძალიან შრომატევადი, როდესაც მუშაობს მასივები. დიდი ზომები. ალგორითმების ფართო კლასის გაფორმება, ასეთი საინფორმაციო ჩანაწერი უნდა შეიცვალოს მასივის ელემენტების ფორმირებით შემთხვევით. ამისათვის გამოიყენეთ პროცედურა შემთხვევითი. და ფუნქცია შემთხვევითი. ორ განზომილებიანი მასივით მუშაობისას გამოიყენება წყობილი ციკლები (ჩვეულებრივ ციკლი პარამეტრით -თვის).

შევსების მასივი შემთხვევითი ნომრები

const n \u003d 5; m \u003d 10; Var I, J: რიცხვი; მატრიქსი: რიცხვის მასივი; დაიწყეთ რანდომიზაცია; I: \u003d 1 to n do (array რიგები) for j: \u003d 1 to m გავაკეთოთ (დამატება ელემენტის სვეტები) Matrix: \u003d შემთხვევითი (100); (ჩვენ განთავსდება მიმდინარე ელემენტის შემთხვევითი რიცხვი ინტერვალიდან: 4); Writeln (შიდა ციკლისგან გამომავალი ახალი ხაზის გადართვა) დასრულდება;

პრობლემების გადაჭრის მაგალითები

მაგალითი 1.

პრობლემის ფორმულირება. საშუალო დადებითი რიცხვი M და N ეძლევა. იმისათვის, რომ შეიქმნას მთელი რიცხვითი მატრიცა ზომა M × N, რომელშიც J-TH სვეტის ყველა ელემენტია 5 · J (J \u003d 1, ..., N).

Const m \u003d 7; n \u003d 10; მე ვარ, ჯ: ბაიტი; მატრიქსი: რიცხვის მასივი; დასაწყისი მე: \u003d 1-დან M გავაკეთოთ J: \u003d 1-დან N Do Matrix: \u003d 5 * J; ... (მასივის გამომავალი)

მაგალითი 2.

პრობლემის ფორმულირება. საშუალო დადებითი რიცხვი M, N და კომპლექტი M ნომრები მოცემულია. შექმნას Matrix ზომა M × N, რომელშიც თითოეული სვეტი შეიცავს ყველა ნომრებს წყაროს დარეკვის (იმავე მიზნით).

Const m \u003d 5; n \u003d 7; ვექტორი: რიცხვის მასივი \u003d (3, 5, 2, 7, 4); მე ვარ, ჯ: ბაიტი; მატრიქსი: რიცხვის მასივი; დასაწყისი J: \u003d 1-დან N Do (ჩვენ ვიღებთ მე -3 სვეტს) მე: \u003d 1-დან M გავაკეთოთ (მისამართები J- ს სვეტის ელემენტებს სტრიქონებზე) Matrix: \u003d Vector [I]; (განხორციელება) ... (გამომავალი შედეგად ორი განზომილებიანი მასივი)

Საშინაო დავალება

  1. საშუალო დადებითი რიცხვი M და N მოცემულია. ჩამოყალიბდეს მთელი რიცხვითი მატრიცის ზომა M × N, რომელიც ყველა ელემენტს მე row მათ აქვთ 10 · I (i \u003d 1, ..., M).
  2. საშუალო დადებითი რიცხვი M, N და N ნომრების კომპლექტი მოცემულია. შექმნას Matrix ზომა M × N, რომელშიც თითოეული ხაზი შეიცავს ყველა ნომრებს წყაროს დარეკვის (იმავე მიზნით).
  3. გარდა ამისა.საშუალო დადებითი რიცხვი M, N, ნომერი D და კომპლექტი M ნომრები მოცემულია. შექმნას Matrix ზომა M × N, რომელშიც პირველი სვეტი ემთხვევა წყარო კომპლექტი ნომრები, ხოლო თითოეული მომდევნო სვეტის ელემენტები ტოლია წინა სვეტის შესაბამისი ელემენტის ჯამი და ნომერი D (როგორც შედეგად, მატრიქსის თითოეული ხაზი შეიცავს არითმეტიკული პროგრესის ელემენტებს).
  4. გარდა ამისა.Matrix ზომა M × N არის. აჩვენე მისი ელემენტები, რომლებიც მდებარეობს ხაზებით (2, 4, ...). ელემენტების გამომავალი ხაზები კეთდება, პირობითი ოპერატორი არ იყენებს.