Національний технічний університет України
«Київський політехнічний інститут імені Ігоря Сікорського»
Алгоритмізація та програмування2:Базові концепції програмування
ЗВІТ
до лабораторної роботи № 3
«Перестановки елементів масивів та способи їх сортування»
Варіант №12
Дата «22» грудня 2021
Завдання до лабараторної роботи:
ЗАВДАННЯ:
1. Ознайомитись з алгоритмами перестановок елементів масивів та способами сортування масивів.
2. У якості індивідуального завдання необхідно написати програмний код, що реалізує перестановку елементів масивів та сортування масивів.
3. Звернення до елементів масиву реалізувати за допомогою вказівника на масив.
4. Роздрукувати (вивести на екран) початковий масив та масив після виконання сортування.
Вихідні дані по варіантах (див. Додаток 7+8).
РЕЗУЛЬТАТ РОБОТИ ПОТРІБНО:
1. Роздрукувати (вивести на екран) початковий масив та масиви після виконання перестановок та сортування.
2. Програмний код розмістити на сайті Repl.it (посилання виключно через кнопку «+ Share»).
3. Звіт до комп’ютерного практикуму додати в свій Клас.
/ /
/
Теоретичні відомості
Сортування масиву — один з найбільш розповсюджених процесів обробки даних. Завдяки йому здійснюється розміщеня об’ектів у визначеному порядку, наприклад, чисел за зростанням або за спаданням їх значень, прізвищ у алфавітному порядку тощо. Існують різні методи сортування, серед них — обмінне сортування (метод «пухирця»), сортування вибором, сортування вставками, швидке сортування, сортування Шелла, пірамідальне сортування, сортування обчисленням адреси, сортування порозрядним групуванням тощо. Ці методи відрізняються швидкістю отримання результату, складністю і універсальністю.
Алгоритм працює таким чином — у поданому наборі даних (списку чи масиві) порівнюються два сусідні елементи. Якщо один з елементів, не відповідає критерію сортування (є більшим, або ж, навпаки, меншим за свого сусіда), то ці два елементи міняються місцями. Прохід по списку продовжується доти, доки дані не будуть відсортованими. Алгоритм отримав свою назву від того, що процес сортування за ним нагадує поведінку бульбашок повітря у резервуарі з водою. Оскільки для роботи з елементами масиву він використовує лише порівняння, це сортування на основі порівнянь.
Алгоритм для ветикальної перестановки елементів масиву:
Vertical [i][j]=Initial [i][N-1-j];
N-довжина виміру даного масиву.
Блок-схема
/
Код програми:
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
int N,K;
int LengthB =30;
int B[LengthB];
int first;
char Array1 [4][4];
int Vertical [4][4];
for(int i=0;i<4;i++)
{
for(int j=0;j<4;j++)
{
Array1 [i][j]=rand()%40;
}
}
printf("Завдання 1.\n");
printf("\t\t\t\t<<<<=== Початковий масив ===>>>>\n\n");
for(int i=0;i<4;i++)
{
printf("||");
for(int j=0;j<4;j++)
{
printf("\t%i\t",Array1 [i][j]);
}
printf("||\n");
}
printf("\n");
printf("\t\t\t\t<<<<=== Масив після виконання перестановок ===>>>>\n\n");
for(int i=0;i<4;i++)
{
for(int j=0;j<4;j++)
{
Vertical[i][j] = Array1[i][3-j];
}
}
for(int i=0;i<4;i++)
{
printf("||");
for(int j=0;j<4;j++)
{
printf("\t%i\t",Vertical[i][j]);
}
printf("||\n");
}
printf("\n---------------------------------------------\n");
printf("Завдання 2.\n");
printf("\t\t\t\t<<<<=== Початковий масив ===>>>>\n");
for(int i=0;i<LengthB;i++)
{
B[i]=rand()%54-11;
printf("%i\t",B[i]);
}
printf("\n---------------------------------------------\n");
printf("Введіть N:");
scanf("%i",&N);
printf("---------------------------------------------\n");
printf("Введіть K:");
scanf("%i",&K);
printf("---------------------------------------------\n");
if(N>0&&N<K&&K>0&&K<30)
{
printf("Масив без зайвих елементів:\n\n");
for(int i=0;i<LengthB;i++)
{
if(i>N&&i<K)
{
printf("%i\t",B[i]);
}
}
printf("\n");
printf("---------------------------------------------\n");
printf("---------------------------------------------\n");
for(int i=N+1;i<K;i++)
{
if(B[i]>B[i+1]&&i<K-1)
{
first=B[i+1];
B[i+1]=B[i];
B[i]=first;
}
else if(B[i]==B[K])
{
B[i]=B[K];
}
for(int i=N+1;i<K;i++)
{
if(B[i]>B[i+1]&&i<K-1)
{
first=B[i+1];
B[i+1]=B[i];
B[i]=first;
}
else if(B[i]==B[K])
{
B[i]=B[K];
}
}
}
printf("\t\t\t\t<<<<===Відсортований масив===>>>>\n\n");
for(int i=N+1;i<K;i++)
{
printf("%d\t",B[i]);
}
}
else printf("Введіть допустиме значення N або K !!!");
}
Результати виводу:
1.Якщо введені допустимі значення, то програма видає такий результат
/
2.Якщо ви ввели недопустиме значення N або К
/
5.Програмний код (додаток):
https://replit.com/join/hkfavzkyad-tr-15tkachienko
Висновок
Під час виконання лабараторної роботи було засвоєно алгоритм перестановок елементів в двовимірному масиві, а також алгоритм сортування виділених елементів масиву.
Готова програма виводить на екран двовимірний масив, який був перетворений з типу char на тип int і масив після перестановок відносно вертикалі, також алгоритм виводить на консоль одновимірний масив В, за допомогою клавіатури можна вибрати на якому проміжку масиву буде відбуватися сортування, результати перестановок виводяться на екран.