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

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

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

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

Динамічне виділення пам’яті для одно- та двовимірних масивів

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

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

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

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

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

Звіт з лабораторної роботи присвячено вивченню динамічного виділення пам'яті для одно- та двовимірних масивів мовою C. Документ містить теоретичні відомості, код програми та висновки щодо виконання завдання.

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

  • Динамічне виділення пам'яті
  • Двовимірні масиви
  • Функція malloc
  • Функція realloc
  • Звільнення пам'яті
  • Мова програмування C

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

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

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

динамічна пам'ятьмасив вказівниківmallocreallocfreeдвовимірний масивоперативна пам'ятьрозподіл пам'яті

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

Національний технічний університет України «КПІ імені Ігоря Сікорського» Кафедра автоматизації проектування енергетичних процесів і систем ЗВІТ з лабораторної роботи № 2 з дисципліни «Алгоритмізація та Програмування 2» Тема «Динамічне виділення пам’яті для одно- та двовимірних масивів» Варіант: 17 Завдання на лабораторну роботу 1. Ознайомитись з особливостями роботи з динамічними двовимірними масивами. 2. Виконати індивідуальне завдання. 3. Оформити ЗВІТ до лабораторної роботи згідно вимог та методичних рекомендацій. 4. Вихідні дані (завдання) обрати згідно свого варіанта у Додатку B-2. Мій варіант 17: Теоретичні відомості: Для виділення пам’яті необхідно виконати наступні кроки: 1. Об’явити масив вказівників (наприклад, int **parray;); 2. Виділити блоки оперативної пам’яті під одномірні масиви, що представляють собою рядки заданої матриці (наприклад, parray = (int**)malloc(N * sizeof(int*));); 3. записати адреси рядків в масив вказівників (наприклад, parray[i] = (int*)malloc(M * sizeof(int));). Для звільнення пам’яті необхідно виконати такі кроки: 1. Видалити адреси рядків в масиві покажчиків (наприклад, for (i = 0; i < N; i++) {free(parray[i]);}) 2. Видалити масив вказівників (наприклад, free(parray);) При такому способі динамічного виділення пам’яті компілятору явно вказується кількість рядків і кількість стовпців в масиві. Функція realloc перерозподіляє пам’ять. Синтаксис: #include <stdlib.h> #include <alloc.h> void * realloc(void *block, size_t size); Опис: realloc намагається стиснути або збільшити попередньо виділений блок block до нового розміру в size байт. Аргумент block вказує на блок пам’яті, отриманий при виклику функцій malloc або realloc. Якщо block є нульовим покажчиком, realloc працює також як і malloc. realloc змінює розмір виділеного блоку пам’яті і при необхідності копіює його вміст в новий блок. Код програми: #include <stdio.h> #include <malloc.h> #include <stdlib.h> #define SIZE 5 #define nCol 2 #define nRow 1 #define K 7 int main(void) { int **parray; parray = (int**)malloc(SIZE * sizeof(int*)); for (int i = 0; i < SIZE; i++) { parray[i] = (int*)malloc(SIZE * sizeof(int)); } for (int i = 0; i < SIZE; i++) { for (int j = 0; j < SIZE; j++) { parray[i][j] = 9 + rand() % (99 + 1 - 9); } } int counter = 0; int newRow; int newCol = SIZE; for (int i = nCol; counter <= K; i++) { newRow = SIZE; for (int j = 0; j < SIZE; j++) { if (counter == K) break; if (i == nCol) j = nRow; newRow--; counter++; } parray[i] = realloc(parray[i], sizeof(int) * newRow); if (counter == K) break; newCol--; } parray = realloc(parray, sizeof(int *) * newCol); parray = realloc(parray, sizeof(int *) * (newCol + 1)); for (int i = 0; i < SIZE; i++) { free(parray[i]); } free(parray); return 0; } Посилання на програму в repl.it: https://replit.com/join/ilsdgyefzj-dolphiedude Висновок: Я ознайомився з особливостями роботи з динамічними двовимірними масивами. Дослідив особливості їхнього застосування. Це мені дозволило написати програму, що розподіляє, змінює та звільняє пам’ять масиву. Спочатку видалив пам’ять N елементів починаючи з елемента K, а потім додав стовпець. Особливих труднощів при виконанні не зустрів
Допоможи студентському архіву

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

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

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

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

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

Admin

26.02.2023 12:38

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