Ymin Ymin, ,якщоякщоYi YiYminYmin
Перед виконанням циклу найбільшому (найменшому) значенню необхідно привласнити яке-небудь початкове (стартове) значення.
Сортування масиву полягає в розташуванні елементів масиву у порядку, що вимагається.
Розглянемо масив а(1), а(2), ..., а(к) . Хай вимагається переставити елементи цього масиву так, щоб після перестановки вони були впорядковані за збільшенням: а(1) а(2) ... а(n). Ця задача називається задачею сортування масиву. Для вирішення цієї задачі можна скористатися, наприклад, наступними найпростішими алгоритмами:1 Знайти елемент масиву, який має якнайменше значення, переставити його з першим елементом. Виконати те ж саме, почавши з другого елемента, і т.д. (сортування вибором).
2 Послідовно проглянути елементи а(1), ..., а(n-1) і кожний елемент, що проглядається, а(i) порівняти з наступним за ним а(i +1). Якщо а(i) > а(i + 1) – ці елементи поміняти місцями. Тим самим найбільше число пересунеться на останнє місце. Наступні перегляди починати знову спочатку, зменшуючи на одиницю кількість елементів, що проглядаються (сортування обміном або методом пухирця).
3 Переглядати послідовно а(2), а(3) ..., а(n) і кожний новий елемент а(i) вставляти на відповідне місце у вже впорядковану сукупність а(1), а(2) ..., а(i-1). Це місце визначається послідовним порівнянням а(i) з впорядкованими елементами а(1), а(2) ..., а(i-1) (сортування вставками).
Ми розглянули сортування за збільшенням. Сортування за убуванням здійснюється аналогічно.
Селективна обробка масиву – це виділення з масиву елементів, що задовольняють умові, і обробка виділених фрагментів. Часто з виділених елементів формують новий (робочий) масив і потім його обробляють. Найбільш часто зустрічаються такі умови обробки елементів масиву:
парні елементи А[i] mod 2 = 0 непарні елементи А[i] mod 2 <> 0
кратні k А[i] mod k = 0 некратні k А[i] mod k <> 0 на парних місцях i mod 2 = 0 на непарних місцях i mod 2 <> 0 додатні елементи А[i] > 0 від’ємні елементи А[i] >= 0 в інтервалі (x1,x2) (А[i]>x1) and (А[i]<x2)
Приклад 3а. Знайти середнє арифметичне додатних парних елементів кожного з масивів А[10] і B[15].
Блок-схеми (рис. 9,10,11,12)
Рисунок 9 - Блок-схема алгоритму процедури Vvod
Рисунок 10 - Блок-схема алгоритму процедури Vivod
Рисунок 11 - Блок-схема алгоритму процедури Sr
Рисунок 12 - Блок-схема алгоритму основної програми
Текст програми
Program Lab3a;
{Селективна Обробка Масивів }
Uses Crt;
Const M=10; N=15;
Type Mas=Array[1..N] Integer;
Var А, B : Mas; I : Integer;
{-------Процедура Введення Масиву-------}
Procedure Vvod(Var M:Mas;K:Integer); Begin
Writeln(' Введіть ',K:2,' Чисел Масиву ');
For I:=1 To K Do Read(M[I]);
Writeln;
End;
{-------Процедура Виведення Масиву-------}
Procedure Vivod(Var M:Mas;K:Integer);
Begin
Writeln(' Початковий Масив ');
For I:=1 To K Do Write(M[I]:4);
Writeln;
End;
{-------Процедура Обчислення Серед. Аріф.---}
Procedure Sr(M:Mas;K:Integer);
Var Sum, Kol : Integer;
Begin
Sum:=0; Kol:=0;
For I:=1 To K Do
If (M[I]>0) And (M[I] Mod 2=0) Then
Begin
Sum:=Sum+M[I];
Kol:=Kol+1;
End;
Writeln(' Сума Додатних Парних= ',Sum:4);
Writeln(' Кількість Додатних Парних = ',Kol:2); If Kol>0 Then
Writeln(' Середнє Арифмет. = ',Sum/Kol:7:3) Else
Writeln(' Додатних В Масиві Немає '); End;
{-------Основна Програма-------}
Begin
Clrscr;
Writeln(' Масив А ');
Vvod(A,M);
Vivod(A,M);
Sr(A,M);
Writeln(' Масив B ');
Vvod(B,N);
Vivod(B,N);
Sr(B,N); Readkey; End.
Приклад 3b. У кожному з масивів А і С поміняти місцями перший і якнайменший додатний елементи. Розмірність масивів довільна.
Блок-схеми (рис. 9,10,13,14)
Блок-схема алгоритму процедур Vvod та Vivod такі ж як у прикладі 3а.
Текст програми
Program Lab3b;
{Заміна Першого І Найменьшого Додатного }
Uses Crt;
Const V=50;
Type Mas=Array[1..V] Real;
Var А, С: Mas; N,M,I: Integer;
{-------Процедура Введення Масиву-------}
Procedure Vvod(Var X:Mas;Var K:Integer);
Var K1:Integer; Begin
Writeln(' Введіть Кількість Ел-Тів Масиву'); Readln(K1);
Writeln(' Введіть ',K1:2,' Чисел Масиву');
For I:=1 To K1 Do Read(X[I]);
Writeln;
K:=K1;
End;
{-------Процедура Виведення Масиву-------}
Procedure Vivod(X:Mas;K:Integer);
Begin
For I:=1 To K Do Write(X[I]:5:2);
Writeln;
End;
{-------Процедура Обробки Масиву-------}
Procedure Obrab(Var X:Mas;K:Integer);
Var Min:Real; Imin:Integer;
Begin
Imin:=0;
For I:=1 To K Do
If X[I]>0 Then
Begin
Min:=X[I];
Imin:=I;
End;
For I:=1 To K Do
If (X[I]>0) And (X[I]<Min) Then
Begin
Min:=X[I];
Imin:=I;
End;
If Imin>0 Then
Begin
Writeln(' Найменьший = ',Min:5:2);
Writeln(' Його Номер = ',Imin:3);
If Imin>1 Then
Begin
X[Imin]:=X[1];
X[1]:=Min;
End
Elsе
Writeln(' Перший Елемент Є Найменьшим ')
End
Else
Writeln(' В Масиві Немає Додатних '); End;
{-------Основна Програма-------}
Begin
Clrscr;
Vvod(A,M);
Vvod(C,N); Clrscr;
Writeln(' Масив А ');
Vivod(A,M);
Obrab(A,M);
Writeln(' Перетворений Масив А ');
Vivod(A,M);
Writeln(' Масив С ');
Vivod(C,N);
Obrab(C,N);
Writeln(' Перетворений Масив C ');
Vivod(C,N); Readkey; End.
Приклад 3c. Обчислити суму двох найбільших і двох якнайменших непарних елементів масиву. Розмірність масиву довільна.
Рисунок 13 - Блок-схема алгоритму процедури Obrab
Рисунок 14 - Блок-схема алгоритму основної програми
Блок-схеми (рис. 15, 16, 17, 18, 19)
Рисунок 15 - Блок-схема алгоритму процедури Vvod
Рисунок 16 - Блок-схема алгоритму процедури Vivod
Рисунок 17 - Блок-схема алгоритму процедури Select
Рисунок 18 - Блок-схема алгоритму процедури Sort
Рисунок 19 - Блок-схема алгоритму основної програми
Текст програми
Program Lab3c;
{Сума Двох Найбільших І Двох Найменьших Непарних}
Uses Crt;
Const V=50;
Type Mas=Array[1..V] Integer;
Var А, C: Mas;
Var S,L,M,I: Integer;
{-------Процедура Введення Масиву-------}
Procedure Vvod(Var X:Mas;Var K:Integer);
Var K1:Integer;
Begin
Writeln(' Введіть Кількість Ел-Тів Масиву '); Readln(K1);
Writeln(' Введіть ',K1:2,' Чисел Масиву');
For I:=1 To K1 Do Read(X[I]);
Writeln;
K:=K1;
End;
{-------Процедура Виведення Масиву-------}
Procedure Vivod(X:Mas;K:Integer);
Begin
For I:=1 To K Do Write(X[I]:4);
Writeln;
End;
{-------Процедура Вибору-------}
Procedure Select(X:Mas;K:Integer;Var У:Mas;
Var Q1:Integer);
Var Q:Integer;
Begin
Q:=0;
For I:=1 To K Do
If X[I] Mod 2 <>0 Then
Begin
Q:=Q+1;
У[Q]:=X[I];
End;
Q1:=Q;
End;
{---------Процедура Сортування-------}
Procedure Sort(Var X:Mas;K:Integer);
Var J,D: Integer;
Begin
For J:=1 To K-1 Do
For I:=J+1 To K Do
If X[J]<X[I] Then
Begin
D:=X[I];
X[I]:=X[J];
X[J]:=D;
End;
End;
{-------Основна Програма-------}
Begin
Clrscr;
Vvod(A,M);
Writeln(' Початковий Масив ');
Vivod(A,M);
Select(A,M,C,L);
If L>3 Then
Begin
Writeln('Робочий Масив');
Vivod(C,L); Sort(C,L);
Writeln('Відсортированый Массив');
Vivod(C,L);
S:=C[1]+C[2]+C[L-1]+C[L];
Writeln('Сума = ',S:3);
End
Else
Writeln(' В Масиві < 4 Непарних Елементів '); Readkey; End.
1 Скласти програму для вирішення наступних задач. Варіанти задач наведені в табл.8.
Таблиця 8 - Варіанти завдання
Варіант | Зміст задачі |
1 | Знайти суму додатних і кількість непарних елементів в масивах А(10) і М(12) |
2 | Обчислити середнє геометричне елементів в масивах Т(15) і А(12) |
3 | Обчислити середнє арифметичне парних і суму непарних елементів в масивах C(10) і F(10) |
4 | Знайти кількість елементів в масивах O(16) і М(12), кратних 4 і не більших заданого числа А |
5 | Обчислити середнє геометричне парних елементів масивів C(10) і М(10), не менших за 10 |
6 | Знайти суму і кількість парних елементів в масивах Р(13) і Z(8), що стоять на непарних місцях |
7 | Знайти кількість елементів, кратних 5, що належить до інтервалу [10;50] в масивах F(14) і М(10) |
8 | Знайти середнє геометричне парних елементів в масивах С(12) і А(8), має парний індекс |
9 | Знайти різницю суми додатних і добуток від’ємних чисел в масивах А(14) і С(9) |
10 | Знайти модуль різниці добутку парних і суми непарних елементів в масивах Н(16) і А(8) |
11 | Знайти суму і кількість елементів в масивах С(10) і А(12), у яких індекс кратний 3 |
12 | Обчислити суму тих елементів масивів А(10) і В(12), числові значення яких належать напівінтервалу [i; i+1] |
13 | Знайти добуток і кількість негативних елементів в масивах В(12) і А(10), має парний індекс |
14 | Обчислити суму і кількість елементів масивів Т(12) і М(12), які мають непарний індекс |
15 | Знайти середнє арифметичне негативних елементів масивів В(12) і С(10), що стоїть на парних місцях |
16 | Знайти добуток кількості парних і кількості непарних елементів в масивах Н(16) і А(12) |
Продовження табл.8