Математичні функції та управляючі конструкції

Інформація про навчальний заклад

ВУЗ:
Національний технічний університет України Київський політехнічний інститут
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Не вказано

Інформація про роботу

Рік:
2021
Тип роботи:
Звіт до лабораторної роботи
Предмет:
Алгоритмізація та програмування

Частина тексту файла (без зображень, графіків і формул):

Національний технічний університет України «Київський політехнічний інститут імені Ігоря Сікорського» Алгоритмізація та програмування 1: Базові концепції програмування ЗВІТ до лабораторної роботи № 4 «Математичні функції та управляючі конструкції» Варіант 4 Дата «12» листопада 2021 Завдання: 1. Створити одновимірний та двовимірний масиви. 2. Виконати початкову ініціалізацію всіх елементів масиву. 3. Виконати маніпуляції з елементами масивів. У якості індивідуального завдання необхідно написати програму, в якій, на першому етапі, користувачем задається вимірність та розмірність масиву та спосіб ініціалізації (з клавіатури/консолі або випадковими числами) елементів масиву. На другому етапі необхідно скористатися варіантом індивідуального завдання з Додатку В-4. РЕЗУЛЬТАТ РОБОТИ ПОТРІБНО: 1. Роздрукувати (вивести на екран) значення всіх елементів масиву. 2. Відкритий для редагування програмний код розмістити на сайті https://replit.com/ (посилання через кнопку «+ Share»). 3. Звіт до комп’ютерного практикуму № 4 додати в свій Клас на ресурсі https://classroom.google.com/. Витяг з теорії: Масив - це структура даних, подана у вигляді групи осередків одного типу, об'єднаних під одним єдиним ім'ям. Масиви використовують для обробки великої кількості однотипних даних. Ім'я масиву є покажчиком, що таке покажчики розповім трохи згодом. Окрема комірка даних масиву називається елементом масиву. Елементами масиву можуть бути дані будь-якого типу. Масиви можуть мати як один, так і більше одного виміру. Залежно кількості вимірювань масиви діляться на одномірні масиви, двовимірні масиви, тривимірні масиви тощо до n-мерного масиву. Найчастіше у програмуванні використовуються одновимірні та двовимірні масиви, тому ми розглянемо лише ці масиви. Елемент масиву (значення елемента масиву) – значення, що зберігається у певній комірці пам'яті, розташованої в межах масиву, а також адресу цієї комірки пам'яті. Кожен елемент масиву характеризується трьома величинами: адресою елемента - адресою початкової комірки пам'яті, в якій розташований цей елемент; індексом елемента (порядковим номером елемента у масиві); значенням елемента. Адреса масиву – адреса початкового елемента масиву. Ім'я масиву – ідентифікатор, який використовується для звернення до елементів масиву. Розмір масиву – кількість елементів масиву Розмір елемента – кількість байт, які займає один елемент масиву. Одновимірні масиви в С Одновимірний масив - масив, з одним параметром, що характеризує кількість елементів одновимірного масиву. Фактично одновимірний масив - це масив, у якого може бути лише один рядок, і n-е кількість стовпців. Стовпці в одновимірному масиві – це елементи масиву. На малюнку 1 показана структура цілісного одновимірного масиву a. Розмір цього масиву - 16 осередків / Двовимірні масиви в С До цього ми розглядали одномірні масиви, якими який завжди можна обмежитися. Допустимо, необхідно обробити деякі дані з таблиці. У таблиці є дві характеристики: кількість рядків та кількість стовпців. Також і в двомірному масиві, крім кількості елементів масиву, є такі характеристики як кількість рядків і кількість стовпців двовимірного масиву. Тобто, візуально, двовимірний масив — це звичайна таблиця з рядками та стовпцями. Фактично двовимірний масив – це одномірний масив одновимірних масивів. Структура двовимірного масиву, з іменем a, розміром m на n показана нижче / Завдання за варіантом: № варіанта Одновимірний масив Двовимірний масив  4 Видалити непарний елемент з номером N (N ввести з клавіатури) Видалити всі рядки, в яких є хоча б один нульовий елемент   Блок-схема алгоритму програми: / Результати компіляції: Одновимірний масив: // Непарний елемент під номером три був успішно видалений Двовимірний масив: / Всі рядки з нульовими елементами були успішно видалені Посилання на код в середовищі Replit: https://replit.com/join/osvaziixaw-ironfire2535 Висновок Під час виконання лабораторної роботи №4 було набуто практичних навичок у роботі з одновимірними та двовимірними масивами, а саме: їх створенні, ініціалізації та оперуванням над ними. Була створена програма у середовищі Replit, що виконує задані в додатку В-4 маніпуляції. Була зроблена перевірка перевірка за допомогою компіляції. Ні кінець був зроблен звіт з лабораторної роботи, що містить всі необхідні компоненти. Код програми: #include <stdio.h> #include <malloc.h> #include <stdlib.h> #include <time.h> #include <memory.h> void fillArray(int *array, int size) { for (int i = 0; i < size; ++i) { array[i] = rand() % 10; } } void fillArrayKeybord(int *array,int size){ for (int i = 0; i < size; ++i) { printf("\nInput array[%d]:",i); scanf("%d",&array[i]); } } void fillMtrx(int **mtrx,int rows,int cols){ for (int i = 0; i < rows; i++) { for (int j = 0; j < cols; j++) { mtrx[i][j] = rand() % 10-5; } } } void fillMtrxKeyboard(int **mtrx,int rows,int cols){ for (int i = 0; i < rows; i++) { for (int j = 0; j < cols; j++) { printf("\nInput mtrx[%d][%d]:",i,j); scanf("%d",&mtrx[i][j]); } } } void printArray(int *array, int size) { printf("\nArray:"); for (int i = 0; i < size; ++i) { printf("%d ", array[i]); } } void printMatrix(int **mtrx, int rows, int cols) { printf("\nMatrix:\n"); for (int i = 0; i < rows; i++) { for (int j = 0; j < cols; j++) { printf("%6d ", mtrx[i][j]); } printf("\n"); } } int CalcZeroRows(int **mtrx,int rows,int cols){ int calc = 0; for(int i =0;i<rows;i++){ for(int j=0;j<cols;j++){ if(mtrx[i][j] == 0 ){ mtrx[i][0]=0; calc++; break; } } } return calc; } int main() { int key = 0; while (key <= 0 || key >= 3) { printf("For create array type '1'" "\nFor create Matrix type '2" "\nEnter key:"); scanf("%d", &key); if (key <= 0 || key >= 3) { printf("Wrong Input!\n"); } } srand(time(NULL)); if (key == 1) { int size = 0; do { printf("Input array size:"); scanf("%d", &size); } while (size <= 0); int *arr = (int *) malloc(size * sizeof(int)); printf("Array was created"); int choose = 0; do { printf("\nSelect how to fill array\nFron keybord type '1'\nRandom value type' 2':"); scanf("%d", &choose); } while (choose <= 0 || choose >=3); if(choose == 1){ fillArrayKeybord(arr,size); }else if(choose ==2){ fillArray(arr, size); } printArray(arr, size); int index = 0; int countOfElem=0; for(int i = 0; i <size;i++){ if(arr[i]%2 != 0){ countOfElem++; } } if(countOfElem !=0){ do{ printf("\nInput index wich will be deleted:"); scanf("%d",&index); }while(index<=0 || index >= size || index >countOfElem); int counter = 0; for(int i = 0; i <size;i++){ if(arr[i]%2 != 0){ counter++; } if(counter == index){ index = i; break; } } size--; counter = 0; int *temp = (int *) malloc(size * sizeof(int)); for (int i = 0; i < size+1; ++i) { if(i!=index){ temp[i-counter] = arr[i]; }else{ counter++; } } arr = (int *) realloc(arr, sizeof(int) * (size)); for (int i = 0; i < size; i++) { arr[i] = temp[i]; } printf("\nThe element was deleted."); printArray(arr, size); free(arr); }else{ printf("\nThere are no odd elements"); } } else if (key == 2) { int rows = 0; int cols = 0; do { printf("Input size of matrix\nInput cols:"); scanf("%d", &cols); printf("Input rows:"); scanf("%d", &rows); } while (rows <= 0 || cols <= 0); int choose = 0; do { printf("\nSelect how to fill array\nFron keybord type '1'\nRandom value type' 2':"); scanf("%d", &choose); } while (choose <= 0 || choose >=3); int **mtrx = (int **) malloc(rows * sizeof(int *)); for (int i = 0; i < rows; i++) { mtrx[i] = (int *) malloc(cols * sizeof(int)); /*for (int j = 0; j < cols; j++) { mtrx[i][j] = rand() % 10-5; }*/ } if(choose == 1){ fillMtrxKeyboard(mtrx,rows,cols); }else if(choose ==2){ fillMtrx(mtrx,rows,cols); } printMatrix(mtrx, rows, cols); int zeroRows = CalcZeroRows(mtrx,rows,cols); int newRows = rows - zeroRows; int c=0; int **tmpMtrx = (int **) malloc(newRows * sizeof(int *)); for (int i = 0; i < newRows; i++) { tmpMtrx[i] = (int *) malloc(cols * sizeof(int)); } for (int i = 0; i < rows; i++) { if(mtrx[i][0] != 0){ tmpMtrx[i] = (int *) malloc(cols * sizeof(int)); for (int j = 0; j < cols; j++) { tmpMtrx[i-c][j] = mtrx[i][j]; } }else{ c++; } } rows= newRows; mtrx = (int **) realloc(mtrx, rows * sizeof(int *)); for (int i = 0; i < rows; i++) { mtrx[i] = (int *) malloc(cols * sizeof(int)); for (int j = 0; j < cols; j++) { mtrx[i][j] = tmpMtrx[i][j]; } } for(int i=0; i<rows;i++){ free(tmpMtrx[i]); } free(tmpMtrx); printf("After delete "); printMatrix(mtrx, rows, cols); for(int i=0; i<rows;i++){ free(mtrx[i]); } free(mtrx); } return 0; }
Антиботан аватар за замовчуванням

17.05.2023 18:05-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!