Seperti pada Pascal, sadari matriks. Array Pascal Dua Dimensi - Matriks

Pelajaran terakhir Pascal ditulis pada 7 Maret, maka kami dibongkar. Hari ini kita belajar apa array dua dimensi di PascalBagaimana itu dijelaskan dan apa yang diwakilinya. Baca lebih lanjut.

Jadi, apa array dua dimensi?Untuk persepsi ringan, kita akan membayangkan array satu dimensi sebagai garis, dan yang semua elemen berjalan secara horizontal, dan dua dimensi sebagai kotak, di mana elemen terletak secara horizontal dan vertikal. Array dua dimensi terdiri dari garis dan kolom, mereka juga disebut matriks atau array matriks.

Bagaimana array dua dimensi menjelaskan? Untuk menulis array dua dimensi ada beberapa cara, saya akan mempertimbangkan 2 dari mereka.

1 Deskripsi metode array: array jenis variabel dalam array (integer / real / byte);

2 Metode untuk menggambarkan array: array array jenis variabel dalam array;

Garis jelaskan pertama (1..m), dan kemudian kolom (1..n).

Dalam metode kedua, itu digambarkan seolah-olah dua array satu dimensi, yang bersama-sama membentuk satu dimensi dua dimensi.

Array dua dimensi dapat dijelaskan dalam bagian jenis untuk daya tarik berikutnya beberapa kali atau dalam deskripsi variabel VAR, saya ingin memperhatikan bahwa alih-alih M dan N, Anda dapat mengganti nomor, dan Anda dapat menggunakan konstanta .

Contoh pekerjaan array dua dimensi dalam bagian deskripsi variabel:

Const.
m \u003d 100;
n \u003d 100;
var.
A: array integer;

Dalam hal ini, kami menetapkan array dua dimensi ukuran 100 per 100, yaitu, kami memiliki matriks persegi.

Contoh tugas array matriks menggunakan bagian jenis:

Const.
m \u003d 100;
n \u003d 100;
Tipe
Matriks \u003d array integer;
var.
A: Matriks;
B: matriks;

Dalam contoh kedua, kami menetapkan dua array matriks identik dengan dimensi 100 per 100, ketika menggambarkan array B, kami tidak perlu menjelaskan ukuran dan tipe data lagi.

Bagaimana cara mengakses array dua dimensi variabel sel?

Untuk merujuk ke array dua dimensi, Anda perlu menentukan nomor angka terlebih dahulu, dan kemudian nomor kolom sebagai berikut:

x-Variabel apa pun, nama array, nomor I-Number, J - Kolom Nomor.

Selain itu, saya dan j dapat berupa variabel dan bilangan bulat.

Contoh menulis data ke array:

Untuk I: \u003d 1 hingga N // tugas di loop line
Untuk j: \u003d 1 hingga m lakukan // tugas dalam siklus nomor kolom
A: \u003d acak (100); // menugaskan nomor sel I dan nomor kolom acak

Kami mengisi dengan array dengan angka acak dari 1 hingga 100.

Contoh suatu program menggunakan array dua dimensi di mana kami mengisi berbagai angka acak dan menampilkannya di layar:

Var // deskripsi variabel dan array
Matriks: array integer;
I, J: Integer;

Mulai // Program Rumah
Writeln ("array dua dimensi:"); // dialog dengan pengguna

Untuk I: \u003d 1 hingga 10 lakukan // mengisi array
Untuk j: \u003d 1 hingga 10 lakukan
Matriks: \u003d acak (100);

Untuk I: \u003d 1 hingga 10 mulai // output dari array
Untuk j: \u003d 1 hingga 10 lakukan
Tulis (matriks, "");
Writeln.
Writeln ("Situs"); // Jika Anda mau, Anda dapat menghapus
akhir; // akhir program

// readln // digunakan untuk turbo pascal

Array dua dimensi di Pascal ditafsirkan sebagai array satu dimensi, jenis elemen yang juga merupakan array (array array). Posisi elemen dalam array pascal dua dimensi dijelaskan oleh dua indeks. Mereka dapat diwakili sebagai tabel atau matriks persegi panjang.

Pertimbangkan susunan pascal dua dimensi dengan dimensi 3 * 3, yaitu, itu akan menjadi tiga baris, dan di setiap baris tiga item:

Setiap elemen memiliki jumlahnya sendiri, seperti array satu dimensi, tetapi sekarang jumlahnya sudah terdiri dari dua angka - nomor baris di mana elemen berada, dan jumlah kolom. Dengan demikian, jumlah elemen ditentukan oleh persimpangan string dan kolom. Misalnya, 21 adalah elemen yang berdiri di baris kedua dan di kolom pertama.

Deskripsi massa pascal dua dimensi.

Ada beberapa cara untuk mendeklarasikan massa pascal dua dimensi.

Kita sudah tahu bagaimana menggambarkan array satu dimensi, elemen-elemen yang dapat memiliki jenis apa pun, dan, oleh karena itu, elemen-elemen itu sendiri mungkin adalah array. Pertimbangkan deskripsi jenis dan variabel berikut:

Contoh dari deskripsi massa pascal dua dimensi

Tipe
Vektor \u003d array<тип_элементов>;
Matriks \u003d array vektor;
Var m: matriks;

Kami menyatakan berbagai dimensi pascal m, yang terdiri dari 10 baris, di masing-masing 5 kolom. Dalam hal ini, m [i] dapat diakses ke setiap i (i], dan masing-masing J adalah elemen di dalam baris I - m [i, j].

Definisi jenis untuk array pascal dua dimensi juga dapat diatur dalam satu baris:

Tipe
Matriks \u003d array array< тип элементов >;
atau bahkan lebih mudah:
Tipe
Matriks \u003d array<тип элементов>;

Banding ke elemen-elemen array dua dimensi memiliki bentuk: m [i, j]. Ini berarti bahwa kami ingin mendapatkan elemen yang terletak di baris I-R dan kolom J. Di sini yang utama adalah bukan untuk membingungkan baris dengan kolom, jika tidak, kita dapat lagi mendapatkan banding ke elemen yang tidak ada. Misalnya, banding ke elemen M memiliki formulir entri yang benar, tetapi dapat menyebabkan kesalahan dalam program.

Tindakan dasar dengan mastif dua dimensi pascal

Segala sesuatu yang telah dikatakan tentang tindakan dasar dengan array satu dimensi adil baik untuk matriks. Satu-satunya tindakan yang dapat dilakukan selama matriks jenis yang sama adalah tugas. Mereka, jika kita memiliki dua matriks dari satu ketik dalam program, misalnya,

tipe
Matriks \u003d array integer;
var.
A, B: matriks;

kemudian selama eksekusi program Anda dapat menetapkan matriks sEBUAH. Nilai matriks dgn B. (A: \u003d b). Semua tindakan lain dilakukan secara bergantian, dengan semua operasi yang diizinkan, yang didefinisikan untuk tipe data dari elemen array. Ini berarti bahwa jika suatu array terdiri dari bilangan bulat, operasi yang didefinisikan untuk bilangan bulat dapat dilakukan di atas elemen-elemennya, jika array terdiri dari karakter, operasi yang didefinisikan untuk bekerja dengan simbol-simbol berlaku untuk mereka.

Masukkan massif pascal dua dimensi.

Untuk input berurutan dari elemen array satu dimensi, kami menggunakan siklus, yang mengubah nilai indeks dari pertama hingga yang terakhir. Tetapi posisi elemen dalam massif dua dimensi pascal ditentukan oleh dua indeks: nomor baris dan nomor kolom. Ini berarti bahwa kita perlu secara konsisten mengubah jumlah baris dari yang pertama ke yang terakhir dan di setiap baris untuk memilah elemen-elemen kolom dari yang terakhir ke yang terakhir. Jadi, kita akan membutuhkan dua untuk siklus, dan salah satunya akan diinvestasikan pada yang lain.

Pertimbangkan contoh memasuki massif pascal dua dimensi dari keyboard:

Contoh dari program input massif dua dimensi pascal dari keyboard

tipe
Matriks \u003d array integer;
var.
A ,: matriks;
I, J: Integer; (indeks array)
Mulai.
Untuk I: \u003d 1 hingga 5 lakukan (siklus untuk bust semua baris)
readln (a [i, j]); (Masukan dari elemen keyboard di baris I-R dan J-Colom)

Array pascal dua dimensi dapat diisi secara acak, mis. Gunakan fungsi acak (n), serta menetapkan nilai beberapa ekspresi ke setiap elemen matriks. Metode mengisi array pascal dua dimensi dipilih tergantung pada set tugas, tetapi bagaimanapun setiap elemen harus didefinisikan di setiap baris dan setiap kolom.

Output dari massif pascal dua dimensi di layar.

Output elemen massif dua dimensi Pascal juga dilakukan secara seri, perlu untuk mencetak item setiap baris dan setiap kolom. Pada saat yang sama, saya ingin elemen-elemen yang berdiri dalam satu baris, dicetak di dekatnya, yaitu. Dalam string, dan elemen kolom terletak satu di bawah yang lain. Untuk melakukan ini, Anda harus melakukan urutan tindakan berikut (pertimbangkan beberapa fragmen program untuk array yang dijelaskan dalam contoh sebelumnya):

Contoh program output dari massif dua dimensi pascal

untuk I: \u003d 1 hingga 5 lakukan (siklus untuk bust semua baris)
Mulai.
Untuk j: \u003d 1 hingga 10 lakukan (bust semua elemen string pada kolom)
Tulis (A [I, J]: 4); (Elemen pencetakan di baris I-th matriks dalam satu baris di layar, dan 4 posisi diberikan pada output setiap elemen)
Writeln; (Sebelum mengubah jumlah garis dalam matriks, Anda perlu menerjemahkan kursor ke awal baris layar baru)
akhir;

Komentar ( itu penting!): Sangat sering dalam program siswa mengalami kesalahan saat memasukkan keyboard atau output ke layar array mencoba sebagai berikut: Readln (a), WriteLn (a), di mana tapi - ini adalah ketik variabel Himpunan. Pada saat yang sama, mereka terkejut dengan pesan kompiler bahwa variabel jenis ini tidak dapat dipertimbangkan atau dicetak. Mungkin Anda akan mengerti mengapa ini tidak bisa dilakukan jika Anda menyajikan n mug berdiri berturut-turut, dan di tangan Anda, misalnya, ketel dengan air. Bisakah Anda di tim "air" mengisi semua lingkaran sekaligus? Tidak peduli seberapa keras Anda mencoba, tetapi di setiap mug Anda harus menuangkan secara terpisah. Mengisi dan output ke layar elemen array juga harus dilakukan secara berurutan dan unsur, karena Dalam memori komputer, elemen-elemen array terletak di sel berturut-turut.

Presentasi massif dua dimensi pascal dalam memori

Elemen-elemen dari array abstrak dalam memori mesin secara fisik terletak secara berurutan, sesuai dengan deskripsi. Dalam hal ini, setiap elemen mengambil memori jumlah byte yang sesuai dengan ukurannya. Misalnya, jika suatu array terdiri dari elemen integer, maka setiap elemen akan menempati dua byte. Dan seluruh array akan mengambil S ^ 2 byte, di mana S adalah jumlah elemen dalam array.

Dan berapa banyak ruang akan terjadi array, terdiri dari array, mis .. matriks? Jelas: s i ^ s j, di mana saya adalah jumlah baris, dan S j adalah jumlah item di setiap baris. Misalnya, untuk array jenis

Matriks \u003d array integer;

ini akan memakan 12 byte memori.

Bagaimana elemen-elemen dari array ini berada dalam memori? Pertimbangkan array matriks matriks dalam memori.

Di bawah setiap elemen M tipe integer, dua sel memori disorot. Akomodasi dalam memori dilakukan "bottom up". Elemen ditempatkan dalam urutan mengubah indeks, yang sesuai dengan skema siklus terlampir: Pertama, baris pertama ditempatkan, kemudian yang kedua, ketiga ... di dalam garis agar elemen-elemen: yang pertama, kedua , dll.

Seperti yang kita ketahui, akses ke variabel apa pun hanya mungkin jika alamat sel memori diketahui di mana variabel disimpan. Memori spesifik dialokasikan untuk variabel saat memuat program, yaitu, korespondensi timbal balik antara variabel dan alamat sel ditetapkan. Tetapi jika kita menyatakan variabel sebagai array, program "tahu" alamat awal array, yaitu elemen pertamanya. Bagaimana akses ke semua elemen lain dari array terjadi? Dengan akses nyata ke sel memori, di mana elemen array dua dimensi disimpan, sistem menghitung alamatnya dengan rumus:

Addr + Sizelem * Cols * (i -1) + Sizelem * (j -1),

di mana addr adalah alamat awal yang sebenarnya dimana array berada dalam memori; I, ik - indeks elemen dalam array dua dimensi; Sizeelem - ukuran elemen array (misalnya, dua byte untuk elemen integer); Cols - jumlah item di baris.

Ukuran ungkapan * cols * (i -1) + SIZEEm * (j -1) disebut perpindahan relatif terhadap awal array.

Berapa banyak memori yang dialokasikan untuk array?

Pertimbangkan tidak begitu banyak pertanyaan tentang berapa banyak memori yang dialokasikan untuk array (kami dibongkar di bagian sebelumnya), tetapi tentang berapa ukuran maksimum yang diizinkan dari array, mengingat jumlah memori yang terbatas.

Untuk mengerjakan program, memori dialokasikan segmen masing-masing 64 KB, setidaknya satu dari mereka didefinisikan sebagai segmen Data. Di sini di segmen ini dan ada data yang diproses oleh program. Tidak ada program variabel yang dapat ditemukan di lebih dari satu segmen. Oleh karena itu, bahkan jika hanya satu variabel yang digambarkan sebagai array terletak di segmen, itu tidak akan bisa mendapatkan lebih dari 65536 byte. Tetapi hampir pasti, selain array di segmen data, beberapa variabel lagi akan dijelaskan, jadi jumlah sebenarnya memori, yang dapat dipilih untuk array, ada dalam rumus: 65536 - s, di mana S adalah jumlahnya memori yang sudah dipilih untuk variabel lain.

Mengapa kita perlu tahu ini? Agar tidak terkejut jika penerjemah akan memberikan pesan kesalahan pada deklarasi array terlalu lama ketika program datang dalam program (benar dari sudut pandang sintaks):

Ketik MyArray \u003d array integer;

Anda sudah tahu itu, mengingat representasi bygine dua byte, realistis untuk mendeklarasikan array dengan jumlah elemen yang sama dengan 65536/2 -1 \u003d 32767. Dan kemudian hanya jika tidak ada variabel lain. Array dua dimensi harus memiliki batas indeks yang lebih kecil.

Contoh pemecahan masalah dengan array dua dimensi Pascal

Sebuah tugas: Temukan produk elemen non-nol dari matriks.

Keputusan:

  • Untuk mengatasi tugas ini, kami akan memerlukan variabel: matriks, yang terdiri, misalnya, dari elemen integer; P adalah produk elemen selain 0; I, Indeks J - Array; N, m - jumlah baris dan kolom dalam matriks.
  • Input data adalah n, m - nilai-nilai mereka masuk dari keyboard; Matriks - Memasukkan matriks untuk mengeluarkan dalam bentuk prosedur, mengisi matriks akan secara acak, I.E. Menggunakan fungsi acak ().
  • Output akan menjadi nilai variabel p (pekerjaan).
  • Untuk memeriksa kebenaran program, perlu untuk menampilkan matriks ke layar, untuk masalah ini prosedur output dari matriks.
  • Prosedur Solusi Masalah:

kami pertama-tama akan mendiskusikan pemenuhan program utama, kami akan membahas implementasi prosedur sedikit nanti:

  • kami memperkenalkan nilai N dan M;
  • Kami memperkenalkan massif pascal dua dimensi, untuk ini kami mengajukan banding ke prosedur VVOD (A), di mana A - matriks;
  • Cetak matriks yang dihasilkan, untuk ini kami menarik prosedur cetak (a);
  • Kami menetapkan nilai awal variabel p \u003d 1;
  • Kami akan memilah-milah semua baris dari saya dari ke-1 ke n., Di setiap baris kami akan memilah semua kolom j dari 1 ke M -O, untuk setiap elemen dari matriks kami akan memeriksa kondisi ini: Jika A IJ? 0, kemudian produk P adalah untuk menggabungkan ke elemen IJ (P \u003d P * A IJ);
  • Tarik nilai produk elemen nonzero dari matriks - P;

Dan sekarang mari kita bicara tentang prosedurnya.

Komentar (itu penting!) Parameter prosedur ini mungkin berupa variabel dari tipe yang telah ditentukan, yang berarti untuk transmisi ke prosedur array sebagai parameter, itu harus dijelaskan sebelumnya. Sebagai contoh:

Tipe
Matriks \u003d array integer;
Prosedur primer (A: matriks);
..............................

Mari kita kembali sekarang ke prosedur kita.

Prosedur input matriks disebut VVOD, parameter prosedur adalah matriks, dan itu harus, sebagai hasilnya, ditransfer ke program dasar, oleh karena itu, parameter harus ditransmisikan dengan referensi. Maka judul prosedur kami akan terlihat seperti ini:

Prosedur vvod (var m: matriks);

Untuk mengimplementasikan siklus bersarang dalam prosedur, kita memerlukan variabel lokal, misalnya, K dan H. Algoritma pengisian matriks telah dibahas, jadi kami tidak akan mengulanginya.

Prosedur untuk mengeluarkan matriks pada layar disebut cetak, parameter prosedur adalah matriks, tetapi dalam hal ini adalah parameter input, oleh karena itu, ditransmisikan dengan nilai. Judul prosedur ini akan terlihat seperti ini:

Prosedur Print (M: Matrix);

Dan lagi, untuk implementasi siklus bersarang dalam prosedur, kita akan memerlukan counter, biarkan mereka merujuk pada yang sama - K dan H. Algoritma untuk output dari matriks pada layar dijelaskan di atas, kami menggunakan deskripsi ini.

Contoh dari program susunan dua dimensi Pascal

Program Proizvedenie;
Tipe
Matriks \u003d array integer;
Var.
A: Matriks;
N, M, i, j: byte;
P: Integer;
Prosedur vvod (var m: matriks);
Var k, h: byte;
Mulai.
Untuk i: \u003d 1 ke n do (variabel n untuk prosedur bersifat global, dan karenanya "diketahui")
Untuk j: \u003d 1 hingga m lakukan (v variabel untuk prosedur ini global, dan karenanya "diketahui")
M: \u003d acak (10);
Akhir;
Prosedur Print (M: Matrix);
Var K, H: Byte;
Mulai.
Untuk i: \u003d 1 ke n lakukan
Mulai.
Untuk j: \u003d 1 ke m doo
Tulis (m: 4);
Writeln;
akhir;
Akhir;
Mulai (mulai program utama)
Writeln ("Masukkan dimensi matriks:");
Readln (n, m);
Vvod (a);
Cetak (a);
P: \u003d 1;
Untuk i: \u003d 1 ke n lakukan
Untuk j: \u003d 1 ke m doo
JIKA SEBUAH.<>0 kemudian p: \u003d p * a;
Writeln (p);
Akhir.

Array dua dimensi Struktur data menyimpan matriks persegi panjang dari formulir:

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

  • Dalam matriks, setiap elemen ditentukan oleh nomor baris dan jumlah kolom, pada persimpangannya
  • Pada Pascal, array dua dimensi diperiksa sebagai array, elemen-elemen yang merupakan array linear (array array). Dua deskripsi berikut tentang array dua dimensi identik var massa: array array nyata; Var massa: array nyata;
  • Matriks di mana jumlah baris sama dengan jumlah kolom disebut matriks persegi.
  • Untuk merujuk pada elemen matriks, Anda harus menggunakan dua indeks yang menunjukkan nomor baris dan nomor kolom. sebagai contoh Myarrr1.. DI kasus ini Elemen array (myarrr1) berada di baris keempat dan kolom kelima.
  • Segala sesuatu yang telah dikatakan tentang tindakan dasar dengan array satu dimensi adil baik untuk matriks. Dengan cap Masiva dalam siklus, variabel tipe integer bertindak sebagai indeks. Secara tradisional, pengidentifikasi "digunakan untuk menunjukkan indeks baris. sAYA. ", Dan kolom -" j. “.
  • Pemrosesan matriks adalah bahwa elemen-elemen baris pertama (kolom) pertama kali dianggap terlebih dahulu, maka yang kedua, dll. Sampai yang terakhir.
  • Jika jumlah baris elemen bertepatan dengan nomor kolom ( i \u003d j.), Ini berarti bahwa elemen terletak pada utama diagonal. Matriks.
  • Jika elemen terletak di sisi diagonal, indeks dikaitkan dengan jumlah elemen ( n.) Kesetaraan berikut: i + j \u003d n + 1

Deskripsi array dua dimensi

Ada beberapa cara untuk iklan (deskripsi) dari array dua dimensi di Pascal.

Deskripsi sebelumnya dari jenis array

Ketik matriks \u003d array integer; (Massif of Integers) VAR Mass: Matrix;

Definisi variabel sebagai array tanpa deskripsi awal dari jenis array

Var massa: array integer;

Inisialisasi array dua dimensi

Saat menginisialisasi array dua dimensi, setiap string adalah sepasang kurung bundar tambahan:

Massa const: array \u003d ((2,3,1,0), (1,9,1,3), (3.5,7,0));

Input / output dari nilai elemen array dua dimensi

Sangat sering, nilai elemen array dimasukkan dari keyboard. Cara menetapkan informasi ini terlalu memakan waktu saat bekerja dengan array. ukuran besar. Untuk men-debug kelas algoritma yang luas, entri informasi tersebut harus diganti dengan pembentukan elemen array secara acak. Untuk melakukan ini, gunakan prosedurnya acak. dan berfungsi acak. Saat bekerja dengan array dua dimensi, siklus bersarang digunakan (biasanya siklus dengan parameter untuk).

Mengisi angka acak array

const n \u003d 5; m \u003d 10; Var i, j: integer; Matriks: array integer; Mulai acak; Untuk i: \u003d 1 ke n do (baris array) untuk j: \u003d 1 ke m lakukan (menambahkan elemen ke kolom) matriks: \u003d acak (100); (Kami menempatkan dalam nomor acak elemen saat ini dari interval: 4); Writeln (beralih ke baris baru ke output dari siklus internal) berakhir;

Contoh pemecahan masalah

Contoh 1.

Formulasi masalah. Nomor positif rata-rata m dan n diberikan. Untuk membentuk matriks integer ukuran m × n, di mana semua elemen kolom J-th memiliki nilai 5 · j (j \u003d 1, ..., n).

Const m \u003d 7; n \u003d 10; Var i, j: byte; Matriks: array integer; Mulailah untuk i: \u003d 1 hingga m do untuk j: \u003d 1 ke n do matrix: \u003d 5 * j; ... (output dari array)

Contoh 2.

Formulasi masalah. Nomor positif rata-rata M, N dan satu set angka M diberikan. Untuk membentuk matriks ukuran m × n, di mana setiap kolom berisi semua angka dari panggilan sumber (dalam urutan yang sama).

Const m \u003d 5; n \u003d 7; Vektor: array integer \u003d (3, 5, 2, 7, 4); Var i, j: byte; Matriks: array integer; Mulailah untuk j: \u003d 1 ke n lakukan (kita ambil kolom jth) untuk i: \u003d 1 ke m lakukan (alamat elemen kolom J-th pada string) matriks: \u003d vektor [i]; (implementasi) ... (dengan output dari array dua dimensi yang dihasilkan)

Pekerjaan rumah

  1. Rata-rata angka positif m dan n diberikan. Untuk membentuk matriks integer dari ukuran m × n, yang semua elemen Saya melempar Mereka memiliki nilai 10 · i (i \u003d 1, ..., m).
  2. Nomor positif rata-rata m, n dan satu set n angka diberikan. Untuk membentuk matriks ukuran m × n, di mana setiap baris berisi semua angka dari panggilan sumber (dalam urutan yang sama).
  3. Selain itu.Nomor positif rata-rata M, N, angka D dan satu set angka M diberikan. Untuk membentuk matriks ukuran m × n, di mana kolom pertama bertepatan dengan set sumber angka, dan elemen masing-masing kolom selanjutnya sama dengan jumlah elemen yang sesuai dari kolom sebelumnya dan angka D (sebagai Hasilnya, setiap baris matriks akan berisi unsur-unsur perkembangan aritmatika).
  4. Selain itu.Matriks ukuran m × n diberikan. Tampilkan elemen-elemennya yang terletak di baris dengan angka genap (2, 4, ...). Output dari elemen dibuat dengan garis, operator kondisional tidak digunakan.