У нас: 141825 рефератів
Щойно додані Реферати Тор 100
Скористайтеся пошуком, наприклад Реферат        Грубий пошук Точний пошук
Вхід в абонемент



Реферат - Паскаль: масиви
23
сталих та знаків операцій, що задається метавиразом

<стала> { <знак> <стала> } <EOF>

Знаки операцій +, -, *, / позначають відповідно додавання, віднімання, множення та ділення. Вхідна стала – це пара цифрових послідовностей, можливо, зі знаками '-' попереду, що задається метавиразом

['-'] Ц { Ц } ' ' ['+'|'-'] Ц [ Ц ]

Метасимвол Ц позначає десяткові цифри. Перша послідовність цифр (довжиною до 20) задає дробову частину числа, друга – десятковий порядок (так, символи 123 -12 задають число 0.123? 10-12). Кожна стала та знак операції набирається на клавіатурі з нового рядка. Ознака кінця <EOF> задається натисканням на "Ctrl-Z".

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

[ '+' | '-' ] Ц1 '.' Ц { Ц } 'E' [ '+' | '-' ] Ц [ Ц ],

де метасимвол Ц1 позначає цифри від 1 до 9.

Створити та використати модуль, що задає обробку чисел у їхньому нестандартному поданні.

Варіанти наборів знаків:

а) +, -; б) *, /; в) +, -, *, /.

28. Написати програму створення за p-ковим поданням натурального числа (послідовність p-кових цифр) q-кового, де p, q – числа з множини {2, 3, ... , 36}. Довжина вхідної послідовності не більше 50 цифр. Значення p та q відповідно

1) 2 та 8; 2) 8 та 2; 3) 2 та 16;

4) 16 та 2; 5) 8 та 16; 6) 16 та 8;

7) задається як вхідне та 10; 8) 10 та задається як вхідне; 9) задаються як вхідні.

29.* Натуральні k та m, де 1? k<m? 2000, задають правильний дріб k/m. Написати програму друкування цифр XX…X, що передують періоду, та періоду YY…Y десяткового розкладу дробу у вигляді 0.XX...X(YY…Y). Наприклад, за дробу 3/4 це буде 0.75(0), за 2/3 – 0.(6), за 1/6 – 0.1(6).

4. Матриці та багатовимірні масиви

Розглянемо прямокутну таблицю з m? n однотипиних елементів як послідовність із m рядків, у кожному з яких n елементів. Послідовності певної довжини подаються в мовах програмування масивами. Отже, виникає поняття "масив, елементами якого є масиви", або двовимірний масив. Якщо елементи прямокутної таблиці самі є послідовностями або таблиці утворюють послідовність певної довжини, то виникає поняття тривимірного масиву тощо.

Означення багатовимірних масивів та зображення їх елементів у мові Паскаль опишемо за допомогою простого прикладу. Позиція в грі "хрестики-нулики на полі 3? 3" подається квадратною таблицею з символів 'x', '0' або ' ' (пропуск). Пронумеруємо клітинки поля, як у шахах – літерами 'a', 'b', 'c' по горизонталі та числами 1, 2, 3 по вертикалі. Тоді рядки таблиці можна подати масивами типу

type Row = array [ 'a' .. 'c' ] of char;

Таблицю можна розглянути як послідовність трьох рядків і подати масивом типу

type Table = array [ 1 .. 3 ] of Row;

Партія, тобто послідовність позицій, має довжину не більше 9, і може подаватися масивом таблиць:

type Game = array [ 1 .. 9 ] of Table;

Масиви типу Table мають два виміри: номер рядка та номер символу в ньому; масиви типу Game – три: номери таблиці, рядка та символу. Вимір 1..9 у типі Game називається зовнішнім, вимір 'a'..'c', що нумерує символи в рядках, – внутрішнім.

Тип Game можна задати еквівалентним виразом, не означаючи імен типів Row і Table, а саме:

type Game = array [ 1 .. 9 ] of

array [ 1 .. 3 ] of

array [ 'a' .. 'c' ] of char;

Нехай A – змінна типу Game. Вираз вигляду A[ i ], де 1? i ? 9, задає змінну типу Table, або типу

array [ 1 .. 3 ] of array [ 'a' .. 'c' ] of char;

вираз вигляду A[i][j], де 1? j? 3, – змінну типу Row, або типу

array[ 'a' .. 'c' ] of char;

вираз вигляду A[i][j][k], де 'a' ? k ? 'c', – змінну типу char.

Мова Паскаль допускає іншу форму задання типів та елементів багатовимірних масивів: виміри та індекси записуються через кому в спільних дужках. Так, означення

type Game1 = array [ 1 .. 9, 1 .. 3, 'a' .. 'c' ] of char

еквівалентне означенню типу Game, а вираз A[i, j, k] – виразові A[i][j][k].

Елементи багатовимірних масивів розташовуються в пам'яті послідовно, найшвидше в них змінюється внутрішній індекс, найповільніше – зовнішній. Зокрема, двовимірні масиви (матриці) розташовуються за рядками. Так, послідовні числа масиву типу

array [ 1 ..2, 'a' ..'b' ] of real

мають набори індексів [1, 'a'], [1, 'b'], [2, 'a'], [2, 'b'], а послідовні символи в масиві типу Game – [1, 1, 'a'], [1, 1, 'b'], [1, 1, 'c'], [1, 2, 'a'], … , [1, 3, 'c'], [2, 1, 'a'], … , [9, 3, 'c'].

Задачі

30. Написати процедуру побудови за дійсними числами a1, … , an квадратної матриці

а) 1 1 … 1 б) a1 a2 … an-1 an

a1 a2 … an a2 a3 … an a1

… …

a1n-1 a2n-1 … ann-1 an a1 … an-2 an-1

31.* У матриці розмірами M ? N обміняти місцями

а) два рядки, б) два стовпці,

задані номерами.

32.* Транспонувати квадратну матрицю без використання додаткової матриці.

33.* Квадратну матрицю повернути за годинниковою стрілкою на

а) 90?


Сторінки: 1 2 3 4 5 6