Багатовимірні масиви - студопедія

TwoDimensionalArray: Array [1..80, 1..25] of Char;

Змінної TwoDimensionalArray відповідає деяка матриця або двовимірний масив, причому кожному елементу даного масиву може бути поставлена ​​у відповідність деяка позиція на екрані комп'ютера (на екрані поміщається 80 стовпців (з номерами від 1 до 80) і 25 рядків (з номерами від 1 до 25)). Таким чином, кожен елемент масиву може бути використаний для зберігання одного символу, відображеного у відповідній позиції екрану.

Оскільки елементи масивів розташовані впорядковано відповідно до їх номерами-індексами, необхідно уважно ставитися до зміни індексів. Обробка таких одновимірних масивів ведеться, як правило, з використанням вкладених циклів For ... to ... do.

Застосування деякого двовимірного масиву.

Змінні Line і Column визначають номера рядків і стовпців на екрані.

TwoDimensionalArray: Array [18..0, 1..25] of char;

Column, Line: integer;

for Line: = 1 to 25 do

for Column: = 1 to 80 do

TwoDimensionalArray [Column, Line]: = Chr (32 + Column);

for Line: = 1 to 25 do

for Column: = 1 to 80 do

Програма, яка виконує «дзеркальне» відображення елементів матриці розмірності m * n, елементами якої є цілі числа. Відображення здійснюється щодо вертикальної осі симетрії (міняє місцями елементи першого стовпчика з останнім, другого з передостаннім і т.д.).

TMatr = array [1..m, 1..n] of integer;

if eq = false then

1. Заповнити два масиви розміру n'n, все елементи якого цілі числа. Обчислити суму двох масивів.

2. Заповнити масив розміру n'n, все елементи якого цілі числа, потім ввести число. Обчислити твір матриці на число.

3. Заповнити масив розміру n'n, все елементи якого цілі числа. Перетворити масив, замінивши рядки стовпцями.

4. Заповнити масив розміру n'n, все елементи якого цілі числа. Перетворити його:

а) розставивши рядки в порядку зростання першого елемента кожного рядка;

б) розставивши рядки в порядку убування першого елемента кожного рядка;

в) розставити стовпці в порядку зростання першого елемента кожного стовпця;

г) розставити стовпці в порядку убування останнього елемента кожного стовпчика.

5. Ускладнити попередню задачу умовою: в разі рівності перших елементів провести розстановку по другим елементам, потім в разі рівності друге - за третіми і т.д.

6. Заповнити масив розміру n'n, все елементи якого цілі числа. Вивести на екран:

а) рядки, перші елементи яких - парні числа;

б) рядки, перші елементи яких - позитивні числа;

в) рядки, сума елементів яких - парне число;

г) стовпці, перші елементи яких - позитивні числа;

д) стовпці, перші елементи яких - парні числа;

е) ті рядки, де елемент головної діагоналі масиву - парне число.

7. Заповнити масив розміру n'n, все елементи якого натуральні числа. Підрахувати число комбінацій символів 'н', 'про'. Комбінації 'але', 'він',. входять в це число.

8. Заповнити випадковим чином масив n'n, все елементи якого цілі числа. Вивести на екран максимальні елементи рядків.

9. Заповнити випадковим чином масив розміру n'n, все елементи якого цілі числа. Отримати новий масив, переставляючи його блоки відповідно до малюнком:

Розглянемо ще один структурований тип даних, так звані записи (Record), що дозволяють зберігати разом змінні, що мають різні типи даних:

<имя типа> = RECORD <список полей> End;

Кожен розділ запису складається з одного або декількох ідентифікаторів полів, відокремлюваних один від одного комами. За ідентифікаторами ставиться двокрапка і опис типу поля (полів), наприклад:

У цьому прикладі тип Birthday (день народження) є запис з полями day, month і year (день, місяць і рік); змінні А і В містять записи типу Birthday.

Як і в масиві, значення змінних типу запису можна привласнювати змінним того ж типу, наприклад:

До кожного з компонентів записи можна отримати доступ, якщо використовувати складене ім'я, тобто вказати ім'я змінної, потім точку і ім'я поля:

Для вкладених полів доводиться продовжувати уточнення:

Щоб спростити доступ до полів запису, використовується оператор приєднання with:

With <переменная> do <оператор>

Тут With, do - ключові слова (с, робити);

<переменная> - ім'я змінної типу запис, за яким, можливо, слід список вкладених полів;

<оператор> - будь-який оператор Турбо Паскаль.

With c.bd do month: = 9;

With c do With bd do month: = 9;

Турбо Паскаль дозволяє використовувати записи з так званими варіативними полями, наприклад:

0: (Birth Place: string [40]);

1: (Country: string [20];

Entri Port: string [20];

У цьому прикладі тип FORMA визначає запис з одним фіксованим полем Name і варіативної частиною, яка задається пропозицією case of. Врятовано частина складається з декількох варіантів (в прикладі для двох варіантів: 0 і 1). Кожен варіант визначається константою вибору, за якою слідує двокрапка і список полів, взятий у круглі дужки. У будь-якому записі може бути тільки одна варіативна частина, і, якщо вона є, то повинна розташовуватися за всіма фіксованими полями.

Відмінною особливістю варіативної частини є та обставина, що всі задані в ній варіанти «накладаються» один на одного, тобто кожному з них виділяється одна і та ж область пам'яті. Це відкриває додаткові можливості перетворення типів, наприклад:

0: (by: array [0 ... 3] of byte);

1: (wo: array [0 ... 1] of word);

У цьому прикладі запис met 4 має три варіанти, кожен з яких займає в пам'яті один і той же ділянку в 4 байт. Залежно від того, до якого полю ми звертаємося в програмі, ця ділянка може розглядатися як масив з 4 байт (поле by) масив з двох цілих типу Word або, нарешті, як одне ціле число типу Longint. Наприклад, цього запису можна спочатку привласнити значення як довгому цілому, а потім проаналізувати результат по байтам або словами.

Схожі статті