Практична робота 61.
Реалізація алгоритмів на
нелінійних масивах.
Завдання 1. Реалізувати
алгоритм(програму) мовою Pascal, в якій елементи
двовимірного масиву [1 .. n , 1 .. m ] (таблиці чисел) формується (або генеруються) випадковим
чином. Виводиться масив чисел на екран. Виводяться кількісні
характеристики чисел у масиві, а саме кількість як непарних, так і парних чисел,
та елементів масиву, що кратні: 3;5;17;18. Вивести суми усіх парних чисел масиву, та
окремі суми усіх елементів масиву, що кратні:
3;5;17;18. Вивести суму усіх чисел масиву, НСК усіх
чисел масиву, НСД усіх чисел масиву.
Алгоритм мовою Pascal:
program MassivPARAMETR;
const h = 4 ; y = 4 ; {Оголошення констант цілих чисел для рядків і для стовпців}
var a: array [ 1. .h, 1. .y] of integer ; {Оголошення динамічного масиву цілих чисел}
var i, j,m,n,k,p,q, sm, sn, sk, sp, sq, sum,a1,b: integer; {оголошення змінних, які визначає індекс (и) елемента}
const h = 4 ; y = 4 ; {Оголошення констант цілих чисел для рядків і для стовпців}
var a: array [ 1. .h, 1. .y] of integer ; {Оголошення динамічного масиву цілих чисел}
var i, j,m,n,k,p,q, sm, sn, sk, sp, sq, sum,a1,b: integer; {оголошення змінних, які визначає індекс (и) елемента}
function
NOD(x, y:integer):integer;
{Функція пошуку найб. НСД}
begin if x <> 0
then NOD:=NOD(y
mod x, x) else NOD:=y; end;
function
NOK(x, y:integer):integer;
{Функція пошуку наймен. НСК}
begin
NOK:=(x div NOD(x, y))*y; end;
begin randomize; {настройка генератора випадкових
чисел}
for i:=1 to h do begin {цикл для формування рядків масиву}
for i:=1 to h do begin {цикл для формування рядків масиву}
for j:=1 to y do { цикл для формування
стовпців масиву} begin
a[i, j]:=-100 +7*random
(200); {генерація випадкових чисел}
write
(a[i, j], '
' ); {виведення масиву на екран чергового рядка масиву}
end ; writeln; end
; readln; { Затримка екрану
}
m:=0;
n:=0; k:=0; p:=0; q:=0; a1:=1; b:=1;
sum=0; sm:=0; sn:=0; sk:=0;
sp:=0; sq:=0;
for i:=1 to h do begin {цикл
для індексування елементів по рядкам масиву}
for j:=1 to y do begin
{цикл для індексування елементів по стовпцям масиву}
if a[i, j] mod 2 =0 then
begin m:=m+1; sm:=sm+a[i, j]; end; { сумування парних елементів масиву}
if a[i, j] mod 3 =0 then
begin n:=n+1; sn:=sn+a[i, j]; end; { сумування елементів масиву, що / на 3}
if a[i, j] mod 5 =0 then
begin k:=k+1; sk:=sk+a[i, j]; end; {
сумування
елементів масиву, що / на 5}
if a[i, j] mod 17 =0 then
begin p:=p+1; sp:=sp+a[i, j]; end; { сумування елементів масиву, що / на 17}
if a[i, j] mod 18 =0 then
begin q:=q+1; sq:=sq+a[i, j]; end; { сумування елементів масиву, що / на 18}
sum=sum+a[i, j]; { сумування усіх елементів масиву} end; end;
for
i:=1 to h do begin
for
j:=1 to y do begin
a1:=NOD(abs(a[i,j]), a1); {Пошук
НСД}
b:=NOK(abs(a[i,j]), b); {Пошук
НСK}
end; end;
writeln('НСД усіх елементів масиву =', a1);
writeln('НСК
усіх елементів масиву =', b);
writeln(m, ' - це
кількість парних чисел в масиві; сума = ', sm);
writeln(n, ' - це кількість чисел в масиві, що кратні 3; сума = ', sn);
writeln(k, ' - це кількість чисел в масиві, що кратні 5; сума = ', sk);
writeln(p, ' - це кількість чисел в масиві, що кратні 17; сума = ', sp);
writeln(q, ' - це кількість чисел в масиві, що кратні 18; сума = ', sq);
writeln(h*y-m, ' - це
кількість непарних
чисел в масиві; сума = ', sum-sm);
writeln(sum, ' - це сума усіх елементів
масиву; ' );
writeln(, ' *************** ' );
end.
Протестуйте
алгоритм, для констант: а) h=3; y=3; б) h=5; y=5; в) h=2; y=2; г) h=10; y=10.
Завдання 2. Реалізувати
алгоритм(програму) мовою Pascal, в якій елементи
двовимірного масиву [1 .. 4 , 1 .. 5] (таблиці чисел) формується
(або генеруються) випадковим чином. Виводиться масив чисел на екран.
Виводяться кількісні характеристики чисел у масиві, а саме кількість як
непарних, так і парних чисел, та
елементів масиву, що кратні: 9;15;37;78. Вивести суми усіх парних чисел
масиву, та окремі суми усіх елементів масиву, що кратні: 9;15;37;78. Вивести
суму усіх чисел масиву, НСК усіх чисел масиву, НСД усіх чисел масиву.
Довідка про масиви
Тема. Структуровані типи даних
Неструктуровані типи даних мають наступне відміну від структурованих: одне ім'я - одне значення.
Класифікуються структуровані типи даних за такими ознаками:
Класифікуються структуровані типи даних за такими ознаками:
- однорідність (елементи однотипні);
- впорядкованість (між елементами визначено порядок проходження);
- тип доступу (прямий або послідовний);
- статична або динамічна.
1. Масиви
Масив - однорідна упорядкована статична структура прямого доступу. Масив можна назвати a сукупністю фіксованого числа однакових компонентів, кожна з яких забезпечується індексом. Для того щоб описати масив, необхідно задати тип компонента і тип індексу.
var <ідентифікатор>: array [тип індексу] of <тип компонент>;
var <ідентифікатор>: array [тип індексу] of <тип компонент>;
Найчастіше в якості типу індексу вживається інтервальний тип, може бути і перераховується тип, а також будь-яким скалярним порядковим типом.
Приклад оголошення масиву:
var mass : array [1..10] of real ; {приклад опису одновимірного масиву}
var a : array [1..15, 1..4] of integer ; {приклад опису двовимірного масиву}
Всі завдання можна умовно уявити з декількох основних блоків:
- блок введення значень елементів масиву (формування елементів масиву випадковим чином);
- блок виведення вихідного масиву;
- блок обробки масиву;
- блок виведення результатів обробки.
Найбільш часто використовувані масиви при вирішенні завдань: одномірні, двовимірні.
Немає коментарів:
Дописати коментар