Частина тексту файла (без зображень, графіків і формул):
МІНІСТЕРСТВО ОСВІТИ І НАУКИ, МОЛОДІ ТА СПОРТУ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ ,,ЛЬВІВСЬКА ПОЛІТЕХНІКА’’
Кафедра інформаційних
систем та мереж
/
Лабораторна робота №1
на тему:
МОДЕЛЮВАННЯ ПРЕДСТВАЛЕННЯ В ПАМ’ЯТІ ВЕКТОРІВ І ТАБЛИЦЬ
Мета роботи: Набуття навичок розміщення в пам’яті векторів і таблиць.
Завдання
Розробити спосіб економного зберігання в пам’яті розріджених матриць(таблиць). Розробити процедури і функції для забезпечення доступу (читання-запис) до елементів матриці. Оцінити час виконання операцій.
№ варіанту індивідуального завдання 10. Всі нульові елементи розміщені в шаховому порядку, починаючи з 1-го елементу 1-ї стрічки.
Опис алгоритму: В даній лабораторній потрібно створити розріджену матрицю, яка б містила лише 0 або 1. Далі потрібно розробити метод економного зберігання, потрібних елементів. В даній лабораторній роботі я використовую метод перетворення елементів матриці в координати. Перебираючи рядки матриці, алгоритм виводить лише координати ненульових елементів, для економнішого зберігання.
Блок-схема алгоритму
Ні
Так
Реалізація програми в мові С
Код програми
//Matrix.cpp
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <ctime>
#define MAX 100
void main()
{
srand(time(0));
int a[MAX][MAX];
int i,j,s,r;
int t1, t2;
printf("Розмiрнiсть:\n");
scanf_s("%d%d",&r,&s);
printf("Згенерована матриця розмiром [%dx%d]\n",r,s);
t1=clock();
for(i=0 ;i<r; i++)
{
printf("\n");
for(j=0; j<s; j++)
{
a[i][j]=rand()%2;
printf(" %d", a[i][j]);
}
}
printf("\n\n");
for(i=0; i<r; i++)
for(j=0; j<s; j++)
{
if (!((i+j) % 2==0)) //Якщо елемент непарний, пропускаємо його
if (a[i][j] != 0) printf("<%d,%d>", i+1, j+1);
}
printf("\n\t");
t2=clock();
printf("\nЧас виконання програми:%ld ms\n", t2-t1);
_getch();
}
Виведення результатів
Даний алгоритм було використано для матриць розмірів 10х10 та 100х100. Різниця в часі виконання була не суттєвою (1.92 секунди) .
/
Рис 1. Виконання на матриці 10х10
/
Рис 2. Виконання на матриці 100х100
Таблиця затрат часу на виконання
Час
Для матриці 10х10
Для матриці 100х100
Різниця
t1
16 мс.
1950 мс.
1934 мс.
t2
17 мс.
1948 мс.
1931 мс.
t3
19 мс.
1911 мс.
1892 мс.
Середня різниця часу складає 1919 мс. – 1.92 секунди.
Висновок: в даній лабораторній роботі я навчився зберігати в пам’яті вектори та таблиці. Для економного збереження матриць я використав спосіб зберігання координат потрібних елементів. Різниця в часі виконання між матрицями 10х10 та 100х100 була не суттєвою – 1.92 секунди. При зчитуванні даних з файлу, час зменшувався лише на декілька мілісекунд: для матриці розміром 10х10, приблизно на 15 мілісекунд, а для матриці 100х100 – 250 мілісекунд. Отже, я вважаю цей спосіб збереження – економним.
Ви не можете залишити коментар. Для цього, будь ласка, увійдіть
або зареєструйтесь.
Ділись своїми роботами та отримуй миттєві бонуси!
Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!