Частина тексту файла (без зображень, графіків і формул):
Національний технічний університет України
«Київський політехнічний інститут імені Ігоря Сікорського»
Алгоритмізація та програмування 1: Базові концепції програмування
ЗВІТ
до лабораторної роботи № 7-8
«Перестановки елементів масивів та способи їх сортування»
Варіант 15
Дата «10» грудня 2021
Завдання на лабораторну роботу:
1. Ознайомитись з алгоритмами перестановок елементів масивів та способами сортування масивів.2. У якості індивідуального завдання необхідно написати програмний код, що реалізує перестановку елементів масивів та сортування масивів.3. Звернення до елементів масиву реалізувати за допомогою вказівника на масив.4. Роздрукувати (вивести на екран) початковий масив та масив після виконання сортування.
Вихідні дані по варіантах (див. Додаток 7+8).
Завдання 1:
/
Рисунок 1
/
Рисунок 2
Завдання 2:
/
Рисунок 3.
РЕЗУЛЬТАТ РОБОТИ ПОТРІБНО:1. Роздрукувати (вивести на екран) початковий масив та масиви після виконання перестановок та сортування.2. Програмний код розмістити на сайті Repl.it (посилання виключно через кнопку «+ Share»).3. Звіт до комп’ютерного практикуму додати в свій Клас.
Теоретичні відомості та хід виконання роботи:
Для виконання даної лабораторної роботи №5 був використаний сайт replit.com . На цьому сайтів був написаний код програми на мові С. Саму програму можна переглянути за посиланням:
https://replit.com/join/cdlaatvkbl-tr-15fundamient
Одновимірний масив – масив, з одним параметром, характеризує кількість елементів одновимірного масиву. Фактично одновимірний масив – це масив, у якого може бути тільки один рядок, і n-е кількість стовпців. Стовпці в одновимірному масиві – це елементи масиву.
Двовимірний масив – це звичайна матриця. Фактично, це одновимірний масив одновимірних масивів.
Обидва завдання було написано у функції main(), також там були ініціалізовані всі масиви, які знадоблять у ході виконання даної лабораторної роботи. Усі звернення до елементів масивів були виконані через вказівники. Введення даних було організоване з консолі за допомогою методу scanf().
Завдання 1:
У завданні 1 потрібно було виконати перестановку елементів матриці навколо вертикальної осі, що проходить через середину матриці. У початковий масив mas[N][N] було введено значення всіх елементів матриці. Далі за допомогою двох циклів for() та формули для перестановки, заданої у завданні, було написано алгоритм рішення цього завдання. Уся перестановка проводилась у новий масив під назвою revMas[N][N]. І у кінці завдання було виведено перестановлену матрицю.
Завдання 2:
У Завданні 2 заданий масив [1..20] перші 10 елементів (1 – 10) потрібно відсортувати за зростанням, інші 10 ( 11 – 20 ) – за спаданням. Для цього було написано перший цикл який проходив по цьому масиву з 1-го елемента по 10-й та сортував усі елементи за зростанням, та 2-й цикл, який проходив з 11-го по 2-й елемент масиву та сортував їх за спаданням.
По завершенню Завдання 2, було виведено повністю відсортований масив згідно умови завдання.
Блок схема програми:
Завдання 1:
/
Рисунок 4.
Завдання 2:
/
Рисунок 5.
Скріншот програми:
/
Рисунок 6.
/
/
Рисунок 7.
Результати програми:
/
Рисунок 8.
/
Рисунок 9.
Висновок: Під час виконання даної лабораторної роботи було вдосконалено навички роботи з алгоритмами перестановки елементів масиву та способами сортування масивів. Також було вдосконалено навички роботи з вказівниками, адже звернення до всіх елементів масивів виконане саме через вказівники. Завдання перевірені на декількох наборах введених змінних і працюють справно.
Силка на Repl:
https://replit.com/join/cdlaatvkbl-tr-15fundamient
Копія коду:
#include <stdio.h>
#include <stdlib.h>
// Введення констант розмірів матриці та масиву
#define SIZE 20
#define N 3
int main() {
// Ініціалізація матриць і масиву
int mas[N][N];
int revMas[N][N];
int arr[SIZE];
// Завдання 1
printf("----- Завдання 1 ------\n");
// Заповнення початкової матриці
for (int i = 0; i < N; i++) {
for(int j = 0; j < N; j++) {
printf("Уведіть елемент матриці під номером [%d][%d]: \n", i+1,j+1);
scanf("%d", &mas[i][j]);
}
}
// Виведення початкової матриці
printf("\nВведена матриця: \n");
for (int i = 0; i < N; i++) {
printf("| ");
for(int j = 0; j < N; j++) {
printf("%d ", *(*(mas+i)+j));
}
printf("|\n");
}
printf("\n");
// Перестановка елементів матриці через вертикаль, що проходить через центр масиву
for (int i = 0; i < N; i++) {
for(int j = 0; j < N; j++) {
*(*(revMas+i)+j) = *(*(mas+i)+N-1-j);
}
}
// Виведення матриці унаслідок виконання завдання
printf("\nОтриманий масив унаслідок виконанная завдання: \n");
for (int i = 0; i < N; i++) {
printf("| ");
for(int j = 0; j < N; j++) {
printf("%d ", *(*(revMas+i)+j));
}
printf("|\n");
}
printf("\n");
// Завдання 2
printf("----- Завдання 2 ------\n");
// Заповнення початкового масиву
for (int i = 0; i < SIZE; i++) {
printf("Уведіть елемент масиву під номером [%d]: \n", i+1);
scanf("%d", &arr[i]);
}
// Виведення початкового масиву
printf("\nВведений масив: \n[ ");
for (int i = 0; i < SIZE; i++) {
printf("%d ",*(arr + i));
}
printf("]\n");
// Сортування першої частини масива ( за зростанням )
int buff = 0;
for(int i = 0 ; i < SIZE/2; i++) {
for(int i = 1; i < SIZE/2; i++) {
if (*(arr+i) < *(arr+i-1)) {
buff = *(arr+i-1);
*(arr+i-1) = *(arr+i);
*(arr+i) = buff;
}
}
}
// сортування другої частини масива ( за спаданням )
for(int i = SIZE/2 ; i < SIZE; i++) {
for(int i = (SIZE/2)+1; i < SIZE; i++) {
if (*(arr+i) > *(arr+i-1)) {
buff = *(arr+i-1);
*(arr+i-1) = *(arr+i);
*(arr+i) = buff;
}
}
}
// Виведення масиву, отриманого внаслідок виконання завдання
printf("\nОтриманий масив внаслідок виконання завдання: \n[ ");
for (int i = 0; i < SIZE; i++) {
printf("%d ",*(arr + i));
}
printf("]\n");
}
Ви не можете залишити коментар. Для цього, будь ласка, увійдіть
або зареєструйтесь.
Ділись своїми роботами та отримуй миттєві бонуси!
Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!