неділя, 10 березня 2019 р.

Реалізація алгоритмів на нелінійних масивах.


Практична робота 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; {оголошення змінних, які визначає індекс (и) елемента}
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 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 mass : array [1..10] of real ; {приклад опису одновимірного масиву}
var a : array [1..15, 1..4] of integer ; {приклад опису двовимірного масиву}
Всі завдання можна умовно уявити з декількох основних блоків:
  • блок введення значень елементів масиву (формування елементів масиву випадковим чином);
  • блок виведення вихідного масиву;
  • блок обробки масиву;
  • блок виведення результатів обробки.
Найбільш часто використовувані масиви при вирішенні завдань: одномірні, двовимірні.

Немає коментарів:

Дописати коментар