- •З м і с т
- •Частина 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 файли і файлові типи даних
- •Файловий тип даних
- •Процедури обробки файлів
- •Завдання до лабораторної роботи
- •Список рекомендованої літератури
Завдання до лабораторної роботи
Складіть програми для розв’язання наступних задач.
Варіант 0n, 3n. Знайдіть суму трьох найбільших <умова А> елементів вихідного масиву Р(22).
Варіант 1n. Знайдіть добуток двох найбільших і двох найменших <умова А> елементів вихідного масиву В(25).
Варіант 2n. Сформуйте два масиви, що містять значення й індекси <умова А> елементів вихідного масиву Х(20).
Умова А наведена в табл.21.
Таблиця 21
|
n |
Умова А |
n |
Умова А |
|
1 |
Додатних парних |
2 |
Від’ємних парних |
|
3 |
Додатних непарних |
4 |
Від’ємних непарних |
|
5 |
Непарних, які находяться в інтервалі [1;25] |
6 |
Парних, які находяться в інтервалі [-20;20] |
|
7 |
Додатних кратних 3 |
8 |
Кратних 3 і не менших за 10 |
|
9 |
Від’ємних кратних 4 |
0 |
Кратних 5 і не більших за 50 |
Лабораторна робота 8 вкладені цикли. Обробка двовимірних масивів
Мета роботи: виробити практичні навички в складанні алгоритмів, написанні та налагодженні програм на селективну обробку двовимірних масивів.
Загальні вказівки
У Паскалі багатовимірні масиви можуть визначатися послідовно: спочатку описується один масив, потім другий, елементами якого є оголошені раніше масиви, і т.д. Один масив вкладається в інший, і ступінь такого вкладення не обмежений.
Наприклад:
type str=array[1..10] of real;
tabl=array[1..5] of str;
Наведений опис двовимірного масиву можна замінити еквівалентним описом
type tabl=array[1..5,1..10] of real;
При обробці двовимірних масивів звичайно застосовуються вкладені цикли. Цикл, що охоплює інші цикли, називається зовнішнім, інші цикли - внутрішніми.
Приклад виконання завдання 1 лабораторної роботи
Приклад 27. Обчислити середні геометричні додатних елементів кожного рядка матриці X(5,8). Визначити мінімальне значення цих середніх і номер відповідного рядка.
Програма має вид:
program pr27;
uses crt;
const m=5; n=8;
type stroka = Array[1..n] of real;
matr = array[1..m] of stroka;
stolb = array[1..m] of real;
var x:matr; b:stroka; sr:stolb; p,min:real;
i,j,k,nmin:integer; z:char;
begin clrscr;
for i:=1 to m do begin
WRITELN('УВЕДИ ',N,' ЧИСЕЛ ',I,'-Ого РЯДКА');
FOR J:=1 TO N DO READ(X[I,J]); END;
WRITELN(' ':10,'ВИХІДНА МАТРИЦЯ ');
FOR I:=1 TO M DO BEGIN
FOR J:=1 TO N DO WRITE(X[I,J]:7:1);
WRITELN;END;
{ОБЧИСЛЕННЯ СЕРЕДНІХ ГЕОМЕТРИЧНИХ}
for i:=1 to m do
begin
b:=x[i]; p:=1; k:=0;
for j:= 1 to n do
if b[j]>0 then
begin p:=p*b[j];k:=k+1; end;
if k>0 then sr[i]:=exp(ln(p)/k) else sr[i]:=-1;
END; {FOR}
{ПОШУК МІНІМАЛЬНОГО ЕЛЕМЕНТА}
min:=1E20;
for i:= 1 to m do
if( sr[i]<min) and (sr[i]>0) then
BEGIN MIN:=SR[I];NMIN:=I; END;
WRITELN;WRITELN(' ':5,' РЕЗУЛЬТАТИ РОЗРАХУНКУ');
FOR I:=1 TO M DO
WRITELN('СЕР.ГЕОМ .',I,'-Ого РЯДКА=',SR[I]:7:2);
FOR I:= 1 TO 34 DO WRITE(' = ');
WRITELN;
WRITELN('МІНІМАЛЬНЕ СЕРЕДНЄ = ',MIN:7:2);
WRITELN('НОМЕР РЯДКА = ',NMIN:2);
z:=readkey
end.
Приклади виконання завдання 2 лабораторної роботи
Приклад 28. Обчислити добуток від множення суми додатних елементів головної діагоналі на суму непарних елементів побічної діагоналі матриці А(6,6).
Програма має вид
program pr28;
uses crt;
const n=6;
type raz=1..n;
matr=array[raz,raz] of integer;
var a:matr; p,s1,s2,i,j:integer; z:char;
BEGIN CLRSCR;
FOR I:=1 TO N DO BEGIN
WRITELN('УВЕДИ ',N,' ЧИСЕЛ ',I,'-Ого РЯДКА');
FOR J:=1 TO N DO READ(A[I,J]); END;
CLRSCR;
WRITELN(' ':10, 'ВИХІДНА МАТРИЦЯ ');
for i:=1 to n do begin
for j:=1 to n do
write(a[i,j]:5); WRITELN;END;
{ОБЧИСЛЕННЯ СУМИ ДІАГОНАЛЕЙ}
s1:=0; s2:=0;
for i:=1 to n do
begin j:= n+1-i;
if a[i,i] > 0 then s1:=s1+a[i,i];
if a[i,j] MOD 2 <> 0 then s2:=s2+a[i,j];
end;
{ОБЧИСЛЕННЯ ДОБУТКУ}
P:=S1*S2;
WRITELN;WRITELN(' ':10,'РЕЗУЛЬТАТИ РОЗРАХУНКУ ');
WRITELN('СУМА ДОД. ЕЛ. ГОЛ. ДІАГОНАЛІ=',S1:4);
WRITELN('СУМА НЕП. ЕЛ. ПОБ. ДІАГОНАЛІ=',S2:4);
WRITELN(' ЇХНІЙ ДОБУТОК = ',P:4);
z:=readkey
end.
Приклад 29. Знайти максимальний елемент побічної діагоналі матриці X(5,5) і вивести на друк весь стовпець, у якому він знаходиться.
Програма має вид:
program pr29;
uses crt;
const n=5;
type raz=1..n;
matr=array[raz,raz] of real;
var x:matr; max:real; i,j,jmax:raz; z:char;
BEGIN CLRSCR;
FOR I:=1 TO N DO BEGIN
WRITELN('УВЕДИ',N,'ЧИСЕЛ ',I,'-ОГО РЯДКА');
FOR J:= 1 TO N DO READ(X[I,J]);
END;
CLRSCR;
WRITELN(' ':5, 'ВИХІДНА МАТРИЦЯ ');
for i:=1 to n do begin
for j:=1 to n do
write(x[i,j]:5:1);
writeln; end;
{ПОШУК МАКСИМАЛЬНОГО ЕЛЕМЕНТА}
max:=-1e20;
for i:=1 to n do
begin j:=n+1-i;
if x[i,j]>max then
begin max:=x[i,j];jmax:=j; end;
END;
{ВИВІД ЗНАЙДЕНОГО СТОВПЦЯ}
WRITELN; WRITELN(' МАКС. ЕЛЕМЕНТ=',MAX:5:1);
WRITELN('СТОВПЕЦЬ З МАКС. ЕЛ. ',jmax:2);
for i:=1 to n do
writeln(' ':10,x[i,jmax]:5:1);
z:=readkey
end.
