субота, 9 березня 2019 р.

Алгоритми з вкладеними циклами


ПРАКТИЧНА РОБОТА 58.
Алгоритми з вкладеними циклами  
та лінійними масивами

Завдання 1. Реалізувати алгоритм для знаходження суми від’ємних елементів в лінійному масиві, що утворюється з випадкових цілих чисел.
Program POSHUK1;
var a: array [1..20] of integer; 
      s: integer;      
i: integer;
begin        
writeln ('перелік 20 випадкових цілих елементів масиву:');     s:=0;       
for i:=1 to 20 do begin  a[i]:=498-random(999); 
writeln (i,  '-ий елемент масиву = ',  a[i]);
if  a[i]<0  then   s:=s+a[i];       
end;   
writeln ( 'Сума від’ємних  чисел  =', s);  
 end.

Завдання 2. Реалізувати алгоритм для знаходження найбільшого спільного дільника(НСД) для  чисел в лінійному масиві, що утворюється з випадкових цілих чисел та знаходження найменшого спільного кратного(НСК) для   чисел в лінійному масиві.
Program POZYTYV2;
var   a,b,c: array [1..6]  of  integer;       
x,y,i: 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   {основна програма}  
writeln ('перелік 6 випадкових цілих чисел масиву:'); 
for i:=1 to 6 do begin  a[i]:=8*i - 4*random(99);   writeln (i, '-е  число  = ', a[i]); end;
b[1]:=NOD(abs(a[1]), abs(a[2]));      
 c[1]:=NOK(abs(a[1]), abs(a[2]));
for i:=1 to 5 do begin  
b[i+1]:=NOD(b[i], abs(a[i+1]));     {Пошук НСД}
c[i+1]:=NOK(c[i], abs(a[i+1]));   
writeln('***');   
writeln(i, '-ий НСДільник  чисел масиву =', b[i]); 
writeln(i, '-ий НСKратне  чисел масиву =', c[i]); 
writeln('***');  end;   writeln('НСД усіх  чисел =', b[6]);  
writeln('НСК усіх  чисел =', c[6]);   
end.

Завдання 3. Реалізувати алгоритм для знаходження найбільшого числа повторень однакових   чисел в лінійному масиві, що утворюється з  20 випадкових цілих чисел.
Program POVTOR3;
 var a:array[1..20] of integer;
         i,j,m,p,n:integer;
begin      
  writeln('перелік 20 ВИПАДКОВИХ чисел в массиві А');
for i:=1 to 20 do  begin 
a[i]:=1-random(4);    
 writeln (i, '-ий елемент масиву = ', a[i]); 
end;
m:=1; p:=1;        
 for i:=1 to 20 do begin        
 n:=0;  
         for j:=1 to 20 do begin
if a[i]=a[j] then inc(n);    
      end;         
 if n>m then begin   
          m:=n; p:=i;         
end;     
  end;
writeln('найповторюване число в масиві:',a[p]);  
writeln('кількість числа: ',a[p], ' =', m ); end.

Завдання 4. Реалізувати алгоритм для знаходження відповіді на питання: чи  повторюються числа в  лінійному масиві, що утворюється з  40 випадкових цілих чисел?
Program ALGORUTM4;
var   a: array [1..40] of integer;    
  i, j: integer;
begin     
  writeln ( 'перелік 40 елементів масиву');
      for i:=1 to 40 do  begin a[i]:=i-random(999); 
writeln (i, '-ий елемент масиву = ', a[i]); end;
     for i:=1 to 40 do begin           
 for j:=i+1 to 40 do begin            
   if a[i]=a[j] then begin
writeln ( 'в масиві є однакові елементи= ',a[i], '  зокрема це  ', i, '-ий  та ', j, '-ий елементи');
 halt;
end; 
end;
end;  
writeln ( 'усі елементи масиву різні'); 
end.


Завдання 5. Реалізувати алгоритм для знаходження відповіді на питання: чи є парні числа в  лінійному масиві, що утворюється з  50 випадкових цілих чисел?
Завдання 6. Реалізувати алгоритм для знаходження відповіді на питання: чи є непарні числа в  лінійному масиві, що утворюється з  60 випадкових цілих чисел?
Завдання 7. Реалізувати алгоритм для знаходження відповіді на питання: чи є круглі числа в  лінійному масиві, що утворюється з  50 випадкових цілих чисел?
Завдання 8. Реалізувати алгоритм для знаходження відповіді на питання: чи є нульові числа в  лінійному масиві, що утворюється з  60 випадкових цілих чисел?


Довідка про масиви

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

Найбільш часто використовувані масиви при вирішенні завдань: одномірні, двовимірні.

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

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