- •З м і с т
- •Частина 1. Алгоритмізація задачі Порядок виконання лабораторних робіт
- •Зміст звіту
- •Основні принципи розробки алгоритмів
- •Лабораторна робота 1 алгоритмізАцІя лінійного, розгалуЖеного Та циклічного обчислювального процесу
- •Загальні вказівки
- •Завдання для самостійної роботи
- •Лабораторна робота 2 селективна обробка масивів
- •Загальні вказівки Селективна (вибіркова) обробка інформації
- •Знаходження екстремального значення
- •Формування одномірного робочого масиву
- •Сортування елементів масиву
- •Завдання для самостійної роботи
- •Лабораторна робота 3 вкладені цикли. Обробка двовимірних масивів
- •Загальні вказівки Вкладені цикли
- •Обробка заданого рядка (стовпця) матриці
- •Обробка заданої діагоналі матриці
- •Селективна обробка рядка (стовпця) матриці, що задовольняє заданій умові
- •Завдання для самостійної роботи
- •Частина 2. Складання і налагодження програми. Обчислення й обробка результатів Порядок виконання лабораторних робіт
- •Зміст звіту
- •Оператор привласнювання
- •Оператори уводу-виводу
- •Завдання до лабораторної роботи
- •Лабораторна робота 2 програмування розгалуЖеного обчислювального процесу
- •Структура Паскаль–програми
- •Умовний оператор
- •Завдання до лабораторної роботи
- •Лабораторна робота 3
- •Завдання до лабораторної роботи
- •Програмування розгалуЖеного циклічного обчислювального процесу. Табулювання функцій
- •Табулювання функцій
- •Завдання до лабораторної роботи
- •Лабораторна робота 5 нестандартні й обмежені типи даних. Оператор варіанта
- •Нестандартні типи даних
- •Обмежені типи даних
- •Оператор вибору варіанта
- •Оператор циклу for
- •Приклади виконання завдання лабораторної роботи
- •Завдання до лабораторної роботи
- •Лабораторна робота 6 регулярні типи даних. Селективна обробка масивів
- •Регулярні типи даних
- •Приклади виконання завдання лабораторної роботи
- •Завдання до лабораторної роботи
- •Лабораторна робота 7 формування робочих масивів за допомогою операцій селекції вихідного масиву
- •Сортування масивів
- •Завдання до лабораторної роботи
- •Лабораторна робота 8 вкладені цикли. Обробка двовимірних масивів
- •Загальні вказівки
- •Завдання до лабораторної роботи
- •Лабораторна робота 9 процедури і функції
- •Процедури
- •Функції
- •Завдання до лабораторної роботи
- •Лабораторна робота 10 обробка символьних даних
- •Символьний тип даних
- •Завдання до лабораторної роботи
- •Лабораторна робота 11 обробка строкових даних
- •Строковий тип даних
- •Процедури
- •Функції
- •'Abcdef' copy(s,2,3) 'bcd';
- •'System' length(s) 6;
- •Завдання до лабораторної роботи
- •Лабораторна робота 12 комбіновані типи даних
- •Приклади виконання завдання лабораторної роботи
- •Завдання до лабораторної роботи
- •Лабораторна робота 13 файли і файлові типи даних
- •Файловий тип даних
- •Процедури обробки файлів
- •Завдання до лабораторної роботи
- •Список рекомендованої літератури
Лабораторна робота 7 формування робочих масивів за допомогою операцій селекції вихідного масиву
Мета роботи: виробити практичні навички у складанні алгоритмів, написанні та налагодженні програм у задачах сортування масивів.
Сортування масивів
Розглянемо масив
елементів а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 (сортування вставками).
Якщо потрібно відсортувати частину масиву, що задовольняє заданим умовам, то спочатку відбирають елементи, що задовольняють заданій умові, у робочий масив, а потім його сортують.
Приклади виконання завдання лабораторної роботи
Приклад 25. Сформувати і вивести на друк два масиви, що містять значення й індекси від’ємних елементів вихідного масиву В(15).
Програма розв’язання даного прикладу має вид:
program pr25;
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.
Приклад 26. Знайти добуток чотирьох найменших додатних кратних 5 елементів вихідного масиву Х(20).
Спочатку формуємо новий масив з додатних кратних 5 елементів вихідного масиву, а потім отриманий масив сортуємо методом виштовхування (пухирця). Програма має вид:
program pr26;
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.
