DevioLabавтоматичне керування капіталом
ПРАЦЮЄ 24/7
КРИПТОВАЛЮТИ · АКЦІЇ · 10 БІРЖ

Портфель, який керується автоматично

DevioLab підбирає стратегії, відстежує ринки та автоматизує купівлю і продаж активів. Кількість доступних криптовалют, акцій і торгових можливостей зростає щодня.

10підключених біржCrypto + Stocksв одному портфелі24/7автоматичний контроль

Звіт до лабораторної роботи № 4 «Математичні функції та управляючі конструкції»

Оригінальна назва роботи

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

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

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

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

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

Про що ця робота

У звіті наведено результати виконання лабораторної роботи з теми математичних функцій та управляючих конструкцій у мові програмування C. Описано створення та обробку одновимірних і двовимірних масивів згідно з індивідуальним варіантом.

У роботі розглядаються

  • Програмування мовою C
  • Одновимірні масиви
  • Двовимірні масиви
  • Динамічна пам'ять
  • Вказівники
  • Алгоритмізація

Зміст і розділи

  1. Завдання
  2. Витяг з теорії
  3. Завдання за варіантом
  4. Результати компіляції
  5. Висновок
  6. Код програми
Для кого:Студенти технічних спеціальностей, викладачі та початківці у програмуванні
Викладачі:Викладач кафедри

Ключові поняття

масиввказівникіндексматрицядинамічна пам'ятьфункціякомпіляціяалгоритмпам'ять

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

Національний технічний університет України «Київський політехнічний інститут імені Ігоря Сікорського» Алгоритмізація та програмування 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-[ім’я автора приховано] Висновок Під час виконання лабораторної роботи №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; }
Допоможи студентському архіву

Ми допомогли тобі — допоможи наступному студенту

Файл ще не обрано

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

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

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

Admin

26.02.2023 12:38

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