Національний технічний університет України
«КПІ імені Ігоря Сікорського»
Кафедра автоматизації проектування енергетичних процесів і систем
ЗВІТ
з лабораторної роботи № 4
з дисципліни «Алгоритмізація та Програмування»
Тема «Масиви та вказівники»
Варіант: 18
Завдання на лабораторну роботу
1. Створити одновимірний та двовимірний масиви.2. Виконати початкову ініціалізацію всіх елементів масиву.3. Виконати маніпуляції з елементами масивів.У якості індивідуального завдання необхідно написати програму, в якій, на першому етапі, користувачем задається вимірність та розмірність масиву та спосіб ініціалізації (з клавіатури/консолі або випадковими числами) елементів масиву. На другому етапі необхідно скористатися варіантом індивідуального завдання з Додатку В-4.
Мій варіант 18:
Теоретичні відомості:
Масив це структура даних, представлена у вигляді групи осередків одного типу, об'єднаних під одним єдиним ім'ям. Масиви використовуються для обробки великої кількості однотипних даних. Ім'я масиву є покажчиком, що таке покажчики розповім трохи пізніше. Окрема осередок даних масиву називається елементом масиву. Елементами масиву можуть бути дані будь-якого типу. Масиви можуть мати як одне, так і більше одного вимірювань. Залежно від кількості вимірювань масиви діляться на одномірні масиви, двовимірні масиви, тривимірні масиви і так далі до n-мірного масиву. Найчастіше в програмуванні використовуються одномірні і двовимірні масиви
Код програми:
//Череватий Андрій Олександрович 12.11.2021 Лабораторна робота №4 Алгоритмізація та програмування 18 варіант
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
int answer, lengthArr1, lengthArr2Dim1, lengthArr2Dim2;
printf("Length of the first array: ");
scanf("%d", &lengthArr1);
int arr1[lengthArr1];
printf("Choose the way\n1 - keyboard input;\n2 - cmd parametrs;\nanything else - random numbers\n");
printf("****************************\n>");
scanf("%d", &answer);
if (answer == 1) {
for(int i = 0; i < lengthArr1; i++) {
printf("Element %d: ", i);
scanf("%d", &arr1[i]);
}
printf("Filling is finished\n");
}
else if (answer == 2) {
printf("CMD parametrs should look like this \"1 2 3 4 5 6\".\nThe result will be: arr1[0] = 1, arr2[0][1] = 4, arr2[1][0] = 5\n");
if (argc - 1 < lengthArr1) {
answer = 0;
}
else {
for (int i = 0; i < lengthArr1; i++) {
arr1[i] = atoi(argv[i + 1]);
printf("Element %d: %d\n", i, arr1[i]);
}
printf("Filling is finished\n");
}
}
if (answer != 1 && answer != 2) {
int min, max;
printf("Set the limits: ");
scanf("%d-%d", &min, &max);
if (max < min) max = max + min + 1;
for (int i; i < lengthArr1; i++) {
arr1[i] = min + rand() % (max + 1 - min);
printf("Element %d: %d\n", i, arr1[i]);
}
printf("Filling is finished\n");
}
printf("****************************\n>");
///////////////////////////////////////////////
printf("Sizes of the second array(AxB): ");
scanf("%dx%d", &lengthArr2Dim1, &lengthArr2Dim2);
int arr2[lengthArr2Dim1][lengthArr2Dim2];
printf("Choose the way\n1 - keyboard input;\n2 - cmd parametrs;\nanything else - random numbers\n");
printf("****************************\n>");
scanf("%d", &answer);
if (answer == 1) {
for (int i = 0; i < lengthArr2Dim1; i++) {
for (int j = 0; j < lengthArr2Dim2; j++) {
printf("Element [%d][%d]: ", i, j);
scanf("%d", &arr2[i][j]);
}
}
printf("Filling is finished\n");
}
else if (answer == 2) {
printf("CMD parametrs should look like this \"1 2 3 4 5 6\".\nThe result will be: arr1[0] = 1, arr2[0][1] = 4, arr2[1][0] = 5\n");
if (argc - 1 - lengthArr1 < lengthArr2Dim1 * lengthArr2Dim2) {
answer = 0;
}
else {
for (int i = 0; i < lengthArr2Dim1; i++) {
for (int j = 0; j < lengthArr2Dim2; j++) {
arr2[i][j] = atoi(argv[i * lengthArr2Dim1 + j + lengthArr1 + 1]);
printf("Element [%d][%d]: %d\n", i, j, arr2[i][j]);
}
}
printf("Filling is finished\n");
}
}
if (answer != 1 && answer != 2) {
int min, max;
printf("Set the limits: ");
scanf("%d-%d", &min, &max);
if (max < min) max = max + min + 1;
for (int i = 0; i < lengthArr2Dim1; i++) {
for (int j = 0; j < lengthArr2Dim2; j++) {
arr2[i][j] = min + rand() % (max + 1 - min);
printf("Element [%d][%d]: %d\n", i, j, arr2[i][j]);
}
}
printf("Filling is finished\n");
}
///////////////////////////////////////////////
printf("****************************\n");
printf("Task1: remove all even elements from the array\n");
int lengthNewArr1 = 0;
for (int i = 0; i < lengthArr1; i++) {
if (arr1[i] % 2 != 0) lengthNewArr1++;
}
int newarr1[lengthNewArr1];
int counter = 0;
printf("Task1 result:\n");
for (int i = 0; i < lengthArr1; i++) {
if (arr1[i] % 2 != 0) {
newarr1[counter] = arr1[i];
printf("Element %d: %d\n", counter, newarr1[counter]);
counter++;
}
}
////////////////////////////////////////////////
printf("****************************\n");
printf("Task2: add K amount of columns to the array\nEnter K: ");
int k;
scanf("%d", &k);
int newarr2[lengthArr2Dim1][lengthArr2Dim2 + k];
for (int i = 0; i < lengthArr2Dim1; i++) {
for (int j = lengthArr2Dim2; j < lengthArr2Dim2 + k; j++) {
printf("Element [%d][%d]: ", i, j);
scanf("%d", &newarr2[i][j]);
}
}
printf("Filling is finished\n");
printf("Task2 result:\n");
for (int i = 0; i < lengthArr2Dim1; i++) {
for (int j = 0; j < lengthArr2Dim2 + k; j++) {
if (j < lengthArr2Dim2) newarr2[i][j] = arr2[i][j];
printf("Element [%d][%d]: %d\n", i, j, newarr2[i][j]);
}
}
return 0;
}
Посилання на програму в repl.it: https://replit.com/join/vlrvpsevqg-dolphiedude
Приклад результату кода:
Висновок:
Я ознайомився із масивами. Дослідив особливості їхнього застосування. Це мені дозволило написати програму, що заповнює значеннями масиви та працює із цими значеннями. Тобто реалізував ініціалізацію одновимірного та двовимірного масиву, маніпуляції із ними. Редагував масив щоб прибрати усі парні елементі. Чи додавав K кількість стовпчиків в двовимірний масив