русс | укр

Мови програмуванняВідео уроки php mysqlПаскальСіАсемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование


Linux Unix Алгоритмічні мови Архітектура мікроконтролерів Введення в розробку розподілених інформаційних систем Дискретна математика Інформаційне обслуговування користувачів Інформація та моделювання в управлінні виробництвом Комп'ютерна графіка Лекції


Двовимірні масиви.


Дата додавання: 2014-11-27; переглядів: 920.


Двовимірні масиви можна уявити собі як масиви масивів. Ця структура відповідає матриці в математиці, прямокутній таблиці даних, наприклад, відомості з результатами екзаменаційної сесії групи студентів, тощо. Найкращою організацією таких даних і буде двовимірний масив, тобто масив , що складається із масивів оцінок кожного студента. Можна таку структуру розглядати і як масив масивів оцінок групи з кожного предмета. Теж саме можна сказати і про матрицю. Кожний елемент матриці стоїть в певному рядку і одночасно в певному стовпці. Номера рядка та стовпця однозначно визначають його місце в матриці і є його індексами. Так само і в двовимірних масивах даних в ТП.

Для оголошення двовимірного масиву можна використати вже знайому конструкцію, що використовувалась для одновимірних масивів в попередньому параграфі:

TYPE AMATR = ARRAY [T1] OF ARRAY[T2] OF <тип елементів>;

Тут після першого службового слова OF , як належить, наведено тип елементів, а саме – масив, тобто мова йде про масив , елементами якого є масиви. T1 і T2 в цій конструкції визначають типи індексів, які можуть бути перелічуваними або обмеженими , як і раніше. Краще спочатку визначити деякий тип одновимірного масиву, який потім використовується як базовий тип в оголошенні двовимірного масиву. Так для прикладу з результатами сесії можна зробити такі оголошення:

TYPE EXAMS = ARRAY[1..4] OF INTEGER ;

VAR SESIA : ARRAY[1..30] OF EXAMS ;

тобто змінна SESIA є 30-елементним масивом, кожний елемент котрого, в свою чергу, є рядом із 4-х цілих чисел. Або другий варіант оголошення:

TYPE GREXAMS = ARRAY[1..30] OF INTEGER;

VAR SESIA : ARRAY[1..4] OF GREXAMS;

Тут вже змінна SESIA є масивом із 4-х елементів, кожний з котрих є масивом із 30 цілих чисел.

Оголошення двовимірного масиву можна зробити ще і в такому форматі:

TYPE <ім’я > = ARRAY[<діапазон1, діапазон2>] OF <тип елементів > ;

Для наведеного прикладу таке оголошення матиме вигляд:

TYPE SESIA = ARRAY[1..30,1..4] OF INTEGER ;

Оголошувати двовимірні масиви можна і в блоці VAR:

VAR SESIA : ARRAY[1..30,1..4] OF INTEGER ;

Для двовимірних масивів зберігається можливість використання змінної верхньої індексної межі з допомогою оголошення відповідної константи, як у одновимірних. В програмах , що використовують двовимірні масиви , для введення, виведення та обробки даних слід застосовувати оператор циклу з параметром. Всі такі програми матимуть конструкцію типу “цикл у циклі” з відповідним вкладенням операторів циклу. В залежності від того, як здійснюється обробка : по рядках чи по стовпцях, визначаються параметри зовнішнього і вкладеного операторів циклу.

Приклад. За результатами сесії визначити середній бал кожного студента, середній бал групи з кожного предмета та загальний середній бал групи в сесію.

PROGRAM BAL ;

CONST N = 30 ;

VAR

I,J : INTEGER ;

PRIZV :ARRAY[1..N] OF STRING[20] ; { Список групи }

SESIA : ARRAY[1..N,1..4] OF INTEGER ; { Відомість оцінок }

SRST : ARRAY[1..N] OF REAL ; { Середній бал студента }

SRPR :ARRAY[1..4] OF REAL ; { Середній бал з предмета }

SRGR :REAL ;{ Середній бал групи за результатами сесії }

SST, SPR, SGR : INTEGER ;

 

BEGIN

FOR I := 1 TO N DO

BEGIN WRITE ( I ) ; READ ( PRIZV[I]) ;

FOR J :=1 TO 4 DO READ ( SESIA[I,J]) ;

WRITELN

END ; { Введення масиву оцінок }

WRITELN ( ‘ СЕРЕДНІЙ БАЛ СТУДЕНТА ‘ ) ;

FOR I := 1 TO N DO

BEGIN SST := 0 ;

FOR J:=1 TO 4 DO SST:= SST + SESIA[I,J] ;

SRST[I] := SST/4 ;

WRITELN ( I , ‘ ‘, PRIZV[I] : 20 , ‘ ‘ , SRST[I] : 5 : 2 )

END ; { Обробка по рядках }

FOR J := 1 TO 4 DO

BEGIN SPR := 0 ;

WRITE ( ‘ СЕРЕДНІЙ БАЛ З ‘, J,’-го ПРЕДМЕТУ ‘ ) ;

FOR I:= 1 TO N DO SPR := SPR + SESIA[I,J] ;

SRPR[J] := SPR/N ; WRITELN (SRPR[J] : 5 : 2 )

END ; { Обробка по стовпцях }

SGR := 0;

FOR I :=1 TO N DO

FOR J := 1 TO 4 DO SGR := SGR + SESIA[I,J] ;

SRGR :=SGR/(N*4) ;

WRITELN ( ‘ СЕРЕДНІЙ БАЛ ГРУПИ =‘ , SRGR : 5 : 2 )

END .

Коментар в програмі наводиться наприкінці відповідного фрагмента.

Треба зазначити , що кількість вимірів масивів формально не обмежена, тобто можливі тривимірні, чотиривимірні і т.д. масиви. Однак сума розмірів всіх компонентів масиву повинна не перебільшувати 64K.

 


<== попередня лекція | наступна лекція ==>
Масиви даних. | Підпрограми


Онлайн система числення Калькулятор онлайн звичайний Науковий калькулятор онлайн