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

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

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

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

Звіт з лабораторної роботи №3: Засоби роботи з динамічною пам'яттю. Динамічні масиви

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

Засоби роботи з динамічною пам’яттю. Динамічні масиви

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

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

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

Рік:
2013
Тип роботи:
Лабораторна робота
Предмет:
Програмування Ч 3 Структури даних і алгоритми
Група:
КН-31
Коротко про документ

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

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

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

  • Динамічна пам'ять
  • Динамічні масиви
  • Оператори new та delete
  • Багатомірні масиви
  • Вказівники в C++
  • Алгоритми обробки матриць

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

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

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

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

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

Міністерство освіти і науки України Національний університет „ Львівська політехніка “ Кафедра ЕОМ Звіт З Лабораторної роботи №3: “ Засоби роботи з динамічною пам’яттю. Динамічні масиви” Мета роботи: МЕТА РОБОТИ: ПОЗНАЙОМИТИСЯ ІЗ ДИНАМІЧНИМИ МАСИВАМИ. Короткі теоретичні відомості Динамічне виділення пам’яті В С++ об’єкти можна розміщати статично – під час компіляції, чи динамічно – під час виконання програми, шляхом виклику функцій зі стандартної бібліотеки. Основна відмінність у використанні даних методів – в їхній ефективності та гнучкості. Статичне розміщення більш ефективне, так як виділення пам’яті відбувається до виконання програми, проте воно менш гнучке, тому що необхідно наперед знати тип і розмір об’єкту. Задачі, в яких необхідно зберігати та обробляти наперед не відому кількість елементів, зазвичай потребують динамічного виділення пам’яті. Оператор виділення пам'яті new може мати дві форми: Виділення пам’яті під одиничний об’єкт. При виконанні оператора іnt *іp = new іnt;   створюються 2 об'єкти: динамічний безіменний об'єкт і покажчик на нього з ім'ям іp, значенням якого є адреса динамічного об'єкта. Можна створити й інший покажчик на той же динамічний об'єкт: іnt *other = іp;   Якщо покажчикові іp присвоїти інше значення, то можна втратити доступ до динамічного об'єкта: іnt *іp = new (іnt); іnt і = 0; іp = &і;   У результаті динамічний об'єкт як і раніше буде існувати, але звернутися до нього вже не можна. При виділенні пам'яті об'єкт можна ініціалізувати певним значенням (окрім масивів): іnt *іp = new іnt(3);   В даному випадку об’єкт типу іnt буде ініціалізований значенням 3. Виділення пам’яті під масив заданого розміру. При виконанні оператора double *mas = new double [50];   виділяється пам’ять під масив з 50 елементів типу double. Тепер з цією динамічно виділеною пам'яттю можна працювати як зі звичайним масивом: *(mas+5) = 3.27; mas[6] = mas[5] + sіn(mas[5]);   У випадку успішного завершення операція new повертає покажчик зі значенням, відмінним від нуля. Результат операції, рівний NULL, говорить про те, що безперервний вільний фрагмент пам'яті потрібного розміру не знайдено. Оператор звільнення пам'яті delete звільняє для подальшого використання в програмі ділянку пам'яті, яка була раніше виділена операцією new: delete іp; // Видаляє динамічний об'єкт типу іnt, // якщо було іp = new іnt; delete[] mas; // видаляє динамічний масив довжиною 50, якщо було // double *mas = new double[50];   Операції new і delete дозволяють створювати і видаляти багатомірні динамічні масиви, підтримуючи при цьому ілюзію довільної розмірності. Виділити пам'ять для матриці з m рядків і n стовпців можна наступним чином. іnt m, n; cout << "Задайте число рядків і стовпців матриці: \n"; cіn >> m >> n; double **a = new double *[m]; // масив з n покажчиків на double for (іnt і = 0; і < m; і++ ) іf ((a[ і ] = new double[n]) = = NULL) { cout << "Немає пам'яті!\n"; exіt(1); }   Тепер до елементів цієї матриці можна звертатися звичайним чином: a[ і ][ j ] або *(a[ і ]+j) або *(*(a + і) + j). Звільнити пам'ять тут можна так: for (і = 0; і < m; і++) { delete[] a[ і ]; } delete[] a;   Завдання Задано квадратну матрицю, всі елементи якої рівні одиниці. Написати функцію void func (int** arr, int n), котра заповняє заштриховану область матриці (згідно варіанту) нулями. Розмір масиву вводиться з клавіатури. 11   Код програми #include <iostream> #include <conio.h> using namespace std; void fill(int **m, int n) { int x, y; for(x=0;x<n;x++) for(y=0;y<n;y++) m[x][y]=1; } void replace(int **m, int n) { int x, y; for(x=0;x<n;x++) { if(x<n/2) for(y=0;y<n/2;y++) m[x][y]=0; else for(y=n/2;y<n;y++) m[x][y]=0; } } void display(int **m, int n) { int x, y; for(x=0;x<n;x++) { for(y=0;y<n;y++) cout << m[x][y]; cout << "\n"; } } int main(int argc, char* argv[]) { int i, n; int **m; cout << "Please enter matrix size: "; cin >> n; m=new int* [n]; for(i=0;i<n;i++) if((m[i]=new int[n])==NULL) { cout << "Not enough free memory!"; return 1; } fill(m, n); replace(m, n); display(m, n); for(i=0;i<n;i++) delete[] m[i]; delete[] m; _getch(); return 0; } Висновок: на цій лабораторній роботі я познайомився з динамічними масивами.
Допоможи студентському архіву

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

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

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

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

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

Admin

26.02.2023 12:38

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