- •Лабораторна робота 13. Робота з множинними типами даних . . . 76 Лабораторна робота 14. Створення й обробка файлів . . . . . . . . . . 79
- •Порядок виконання лабораторних робіт
- •Типи даних
- •Оператор привласнювання
- •Оператори уводу-виводу
- •Завдання до лабораторної роботи
- •Умовний оператор
- •Завдання до лабораторної роботи
- •Завдання до лабораторної роботи
- •Лабораторна робота 4 нестандартні й обмежені типи даних. Оператор варіанта
- •Нестандартні типи даних
- •Обмежені типи даних
- •Оператор вибору варіанта
- •Оператор циклу for
- •Приклади виконання завдання лабораторної роботи
- •Завдання до лабораторної роботи
- •Лабораторна робота 5 регулярні типи даних. Селективна обробка масивів
- •Регулярні типи даних
- •Приклади виконання завдання лабораторної роботи
- •Завдання до лабораторної роботи
- •Завдання до лабораторної роботи
- •Лабораторна робота 7 вкладені цикли. Обробка двовимірних масивів
- •Загальні вказівки
- •Завдання до лабораторної роботи
- •Лабораторна робота 8 процедури і функції
- •Процедури
- •Функції
- •Завдання до лабораторної роботи
- •Лабораторна робота 9 обробка символьних даних
- •Символьний тип даних
- •Завдання до лабораторної роботи
- •Лабораторна робота 10 обробка строкових даних
- •Строковий тип даних
- •Процедури
- •Функції
- •Завдання до лабораторної роботи
- •Лабораторна робота 11 комбіновані типи даних
- •Приклади виконання завдання лабораторної роботи
- •Завдання до лабораторної роботи
- •Лабораторна робота 12 файли і файлові типи даних
- •Файловий тип даних
- •Процедури обробки файлів
- •Завдання до лабораторної роботи
- •Лабораторна робота 13 робота з множинними типами даних
- •Завдання до лабораторної роботи
- •Лабораторна робота 14 створення й оброблення файлів
- •Файли з типом
- •Процедури для роботи з файлами з типом
- •Функції для обробки файлів з типом
- •Завдання до лабораторної роботи
- •Лабораторна робота 15 коректування файлів
- •Завдання до лабораторної роботи
- •Процедури роботи з екраном
- •Процедури установлення текстових режимів I управління кольором
- •Процедури управління курсором
- •Процедура установлення текстових вікон
- •Завдання до лабораторної роботи
- •Лабораторна робота 17 перевірка достовірності даних
- •Вибір критеріїв достовірності
- •Типові алгоритми уводу I перевірки достовірності даних
- •Завдання до лабораторної роботи
- •Лабораторна робота 18 графічні засоби мови паскаль
- •Графічні процедури мови Паскаль
- •Завдання до лабораторної роботи
- •Порядок виконання лабораторної роботи
- •Розрахунок масштабу I зрушення графіка
- •Процедура для креслення графіка
- •Завдання до лабораторної роботи
- •Порядок виконання роботи
- •Список рекомендованої літератури
- •Додаток а
Завдання до лабораторної роботи
Складіть програми для рішення наступних задач (таблиця 6).
Таблиця 6
Вар. |
Зміст завдання |
1 |
Обчислити середнє геометричне елементів масиву Х(20), що задовольняють умові 2 xi<20,5 |
2 |
Обчислити середнє геометричне додатних парних елементів масиву М(20) |
3 |
Обчислити середнє геометричне додатних непарних елемнтів масиву А(15) |
4 |
Обчислити середнє арифметичне елементів масиву В(20), що задовольняють умові –5<bi31,8 |
5 |
Обчислити середнє арифметичне від’ємних елементів масиву Х(15), кратних 3 |
6 |
Знайти кількість елементів масиву Р(20), кратних 4 і не більших від заданого числа А |
7 |
Знайти кількість елементів масиву В(15),числові значення яких належать інтервалу [-8,16] |
8 |
Знайти номер і значення найбільшого парного елемента масиву С(25) |
9 |
Знайти добуток максимального та мінімального від'ємних непарних елементів масиву А(20) |
10 |
Знайти різницю максимального та мінімального додатних парних елементів масиву В(25) |
11 |
Обчислити суму парних від'ємних елементів масиву К(20) |
12 |
Обчислити добуток непарних елементів масиву Х(30), не менших від заданого числа С |
13 |
Обчислити середнє геометричне парних елементів масиву К(20), не менших від 10 |
14 |
Обчислити середнє геометричне додатних елементів масиву А(25), не кратних 3 |
15 |
Обчислити суму квадратів додатних елементів масиву Р(15), що мають непарні індекси |
16 |
Обчислити середнє геометричне елементів масиву В(20), кратних 5, числові значення яких належать інтервалу [20, 80] |
17 |
Обчислити середнє арифметичне додатних парних елементів масиву Х(15) |
Продовження таблиці 6
Вар. |
Зміст завдання |
18 |
Підрахувати кількість додатних і парних елементів масиву Х(20) |
19 |
Обчислити середнє арифметичне непарних елементів масиву А(25), числові значення яких належать інтервалу [-15, 45] |
20 |
Обчислити суму тих елементів масиву А(20), числові значення яких належать інтервалу [i,i+1] |
21 |
Знайти номер і значення найменшого додатного непарного елемента масиву А(25) |
22 |
Записати число +1 замість максимального парного, а число -1 замість мінімального непарного елемента масиву М(15) |
23 |
Знайти частку від ділення максимального елемента на мінімальний від'ємний елемент масиву В(20) |
24 |
Знайти різницю між добутком парних елементів і сумою додатних елементів масиву Х(20) |
25 |
Знайти різницю між сумою непарних і добутком від'ємних елементів масиву А(15) |
26 |
Знайти номер останнього додатного парного елемента в масиві В(20) |
27 |
Вивести на друк перший від'ємний елемент масиву К(25) і його порядковий номер |
28 |
У масиві Х(20) поміняти місцями найменший додатний і останній елементи |
29 |
У масиві В(15) поміняти місцями найбільший і найменший елементи |
30 |
Знайти різницю між сумою парних елементів і добутком додатних елементів масиву Y(25) |
Лабораторна робота 6
ФОРМУВАННЯ РОБОЧИХ МАСИВІВ ЗА ДОПОМОГОЮ
ОПЕРАЦІЙ СЕЛЕКЦІЇ ВИХІДНОГО МАСИВУ
Мета роботи: виробити практичні навички у складанні алгоритмів, написанні та налагодженні програм у задачах сортування масивів.
Сортування масивів
Розглянемо масив елементів а1,а2,а3,…,аn. Нехай потрібно переставити елементи цього масиву так, щоб після перестановки вони були упорядковані за неубуванням: а1 а2…аn. Ця задача називається задачею сортування чи упорядкування масиву. Для розв’язання цієї задачі можна скористатися, наприклад, такими алгоритмами:
1 Знайти елемент масиву, що має найменше значення, переставити його з першим елементом, потім проробити теж саме, почавши з другого елемента і т.д. (сортування вибором).
2 Послідовним переглядом елементів а1,…,аn знайти найменше i таке, що аi>ai+1. Поміняти ai і аi+1 місцями, відновити перегляд з елемента аi+1 і т.д. Тим самим найбільший елемент пересунеться на останнє місце. Наступні перегляди починати знову спочатку, зменшуючи на одиницю кількість елементів, що переглядаються (сортування обміном або методом пухирця).
3 Переглядати послідовно а2,а3,…,аn і кожен новий елемент аi вставляти на придатне місце у вже упорядковану сукупність а1,а2,а3,...,аi-1. Це місце визначається послідовним порівнянням аi з упорядкованими елементами а1,а2,...,аi-1 (сортування вставками).
Якщо потрібно відсортувати частину масиву, що задовольняє заданим умовам, то спочатку відбирають елементи, що задовольняють заданій умові, у робочий масив, а потім його сортують.
Приклади виконання завдання лабораторної роботи
Приклад 17. Сформувати новий масив з позитивних елементів вихідного масиву x(15).
Порядок роботи:
Крок 1. Уводимо масив x(15).
Крок 2. Установлюємо вихідний індекс робочого масиву j=0.
Крок 3. Організовуємо цикл, що перебирає елементи вихідного масиву (тобто індекс i), починаючи з 1-го і кінчаючи 15-м.
Крок 4. Якщо xi 0, то йдемо на крок 7.
Крок 5. Встановлюємо індекс наступного елемента робочого масиву j = j + 1.
Крок 6. Привласнюємо елементу робочого масиву значення елемента вихідного масиву yj = xi.
Крок 7. Якщо цикл по i не закінчився, йдемо на початок циклу, тобто на крок 3.
Крок 8. Друкуємо j елементів робочого масиву y.
Крок 9. Останов.
Приклад 18. Сформувати і вивести на друк два масиви, що містять значення й індекси від’ємних елементів вихідного масиву В(15).
Програма розв’язання даного прикладу має вид:
program pr18;
uses Crt;
const N=15;
type Mas1=array[1..N] of real;
Mas2=array[1..N] of integer;
VAR B,X:MAS1; Y:MAS2; I,J:INTEGER; P:CHAR;
BEGIN CLRSCR;
WRITELN(' УВЕДІТЬ ',N,' ЧИСЕЛ');
FOR I:=1 TO N DO READ(B[I]);
WRITELN(' ':20, 'ВИХІДНИЙ МАСИВ');
for i:=1 to N do write(b[i]:5:1);
writeln;
j:=0;
for i:=1 to N do begin
if b[i]<0 then
begin
j:=j+1;x[j]:=b[i];y[j]:=i;
end;
END;
WRITELN(' ':10, 'НОВІ МАСИВИ');
if j>0 then for i:=1 to j do
writeln(' ':5,'x(',i,')=',x[i]:5:1, 'y(',i,')=',y[i]:2)
else WRITELN(' ТАКИХ ЕЛЕМЕНТІВ НЕМА);
p:=readkey
end.
Приклад 19. Знайти суму двох найбільших негативних елементів масиву x(15).
Порядок роботи:
Крок 1. Уводимо масив x(15).
Крок 2. Установлюємо вихідний індекс робочого масиву j=0.
Крок 3. Організовуємо цикл, що перебирає елементи вихідного масиву (тобто індекс i), починаючи з 1-го і кінчаючи 15-м.
Крок 4. Якщо xi 0, то йдемо на крок 7.
Крок 5. Встановлюємо індекс наступного елемента робочого масиву j = j + 1.
Крок 6. Привласнюємо елементу робочого масиву значення елемента вихідного масиву yj = xi.
Крок 7. Якщо цикл за i не закінчився, йдемо на початок циклу, тобто на крок 3.
Крок 8. Якщо j < 2, то видаємо повідомлення «Масив не сформований» і йдемо на крок 17.
Крок 9. Організовуємо цикл, що визначає кількість переглядів робочого масиву (тобто індекс k), починаючи з 1-го і кінчаючи j-м.
Крок 10. Організовуємо цикл, що визначає пару елементів робочого масиву, що переглядається, (тобто індекс i), починаючи з 1-го і кінчаючи (j-1)-м.
Крок 11. Якщо перший елемент не більше другого, то йдемо на крок 13.
Крок 12. Змінюємо два елемента місцями:
c = yi; yi = yi+1; yi+1 = c.
Крок 13. Якщо цикл по i не закінчився, йдемо на початок циклу, тобто на крок 10.
Крок 14. Якщо цикл за k не закінчився, йдемо на початок циклу, тобто на крок 9.
Крок 15. Обчислюємо суму s = yj + yj-1.
Крок 16. Друкуємо s.
Крок 17. Останов.
Приклад 20. Знайти добуток чотирьох найменших додатних кратних 5 елементів вихідного масиву Х(20).
Спочатку формуємо новий масив з додатних кратних 5 елементів вихідного масиву, а потім отриманий масив сортуємо методом виштовхування (пухирця). Програма має вид:
program pr20;
uses crt;
LABEL 1;
const n=20;
type raz=1..N; mac=array [raz] of integer;
var x,a:mac; d,i,j,k,r:integer; p:char;
BEGIN CLRSCR; WRITELN('УВЕДИ ',N,' ЧИСЕЛ');
FOR I:=1 TO N DO READ(X[I]);
WRITELN(' ':20,'ВИХІДНИЙ МАСИВ');
FOR I:=1 TO N DO WRITE(X[I]:4);
{ ФОРМУВАННЯ НОВОГО МАСИВУ }
writeln; j:=0;
for i:= 1 to N do begin
IF (X[I]>0) AND (X[I] MOD 5 = 0) THEN
BEGIN J:=J+1; A[J]:=X[I]; END; END;
IF J=0 THEN WRITELN(‘ МАСИВ НЕ СФОРМОВАНО’): goto 1;
{ СОРТУВАННЯ ПО ЗРОСТАННЮ }
for k:= 1 to j do
for i:= 1 to j-k do
if a[i+1]<a[i] then
BEGIN D:=A[I]; A[I]:=A[I+1]; A[I+1]:=D; END;
WRITELN(' ':5,'ВІДСОРТОВАНИЙ МАСИВ');
for i:= 1 to j do write(a[i]:4); writeln;
if j>=4 then begin r:=1;
for i:=1 to 4 do r:=r*a[i];
WRITELN('ДОБУТОК 4- Х НАЙМЕНШИХ=',R:6);end
ELSE WRITELN(‘Масив не містить 4 додатних кратних 5 елементів’);
1: p:=readkey
end.