Використання вказівників для роботи з масивами даних

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

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

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

Рік:
2024
Тип роботи:
Звіт
Предмет:
Інформатика та обчислювальна техніка

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

Міністерство освіти та науки України Національний університет «Львівська політехніка» Інститут телекомунікацій, радіоелектроніки та електронної техніки Кафедра теоретичної радіотехніки та радіовимірювань Звіт з лабораторної роботи №9 Тема «Використання вказівників для роботи з масивами даних» з дисципліни «Інформатика та обчислювальна техніка» Мета роботи: Освоїти способи звертання до елементів масивів за допомогою вказівників. Навчитись виділяти та використовувати динамічну пам’ять для розміщення масивів даних. Варіант 5 Постановка задачі. Написати програму, яка здійснює обробку масиву згідно заданого варіанту. В програмі використати динамічне виділення пам’яті для масиву. Всі операції з елементами масиву здійснювати тільки за допомогою вказівників. Масив ввести з клавіатури. Програма повинна видавати підказку користувачу про те який елемент вводити. Завдання Написати програму, яка знаходить мінімальний та максимальний елементи двовимірного масиву. Короткі теоретичні відомості Вказівник – це змінна, яка містить адресу деякого об’єкту. Перед використанням вказівник потрібно оголосити. Формат оголошення вказівника: тип_змінної *ім’я_вказівника де тип_змінної – визначає тип тієї змінної на яку вказує вказівник Наприклад, char *p_rt, int *len, float *prt. Щоб використати вказівник його необхідно ініціалізувати – присвоїти йому значення адреси змінної на яку він вказує. Використовувати неініціалізовані вказівники не можна, бо це призводить до помилок в програмі, які важко виявити. Формат ініціалізації вказівника: ім’я_вказівника=&ім’я_змінної Наприклад, p_rt=&name, len=&count, prt=&f1. Операція взяття адреси - & вказує на те, що вказівнику присвоюється не значення змінної, а її адреса. Інкрементація чи декрементація вказівника приводить до переходу до наступного чи попереднього елементу масиву. В мові С існує однозначний зв’язок між вказівниками та масивами: ім’я масиву без квадратних дужок є вказівником на перший елемент масиву. Наприклад, якщо оголошено масив data[25], то data – це адреса першого елемента масиву. Таким чином щоб отримати адресу першого елементу масиву можна записати data або &data[0], щоб отримати адресу другого елементу - (data+1) або &data[1], третього - (data+2) або &data[2]. Щоб присвоїти значення першому елементу масиву можна записати *(data)=4 або data[0]=4, другому елементу - *(data+1)=8 або data[1]=8, третьому - *(data+2)=45 або data[2]=45. У випадку двовимірного масиву присвоєння значення елементу, який знаходиться на перетині k-го рядка та n-го стовпця здійснюється наступним чином: *(*(matr+k)+n)=91 або matr[k][n]=91. Бібліотека С містить функції для розподілу пам’яті безпосередньо в ході виконання програми. Такий розподіл називається динамічним розподілом пам’яті. Для використання функцій динамічного керування пам’яттю до програми необхідно підключити файли- заголовки stdlib.h або alloc.h. Найчастіше використовуються наступні функції malloc(), calloc(), free(). Функція malloc() виділяє в пам’яті блок з n байт і повертає вказівник на перший байт цього блоку. Наприклад, pd=malloc(sizeof(int)) – повертає вказівнику рd адресу блоку пам’яті для одного цілого числа, rt1=malloc(40*sizeof(float)) - повертає вказівнику rt1 адресу першого байту блоку пам’яті для сорока дійсних чисел. Функція calloc() виділяє пам’ять для групи об’єктів і повертає вказівник з адресою на перший байт виділеного блоку. Наприклад, name=calloc(120, sizeof(char)) повертає вказівнику name адресу першого байту блоку пам’яті для 120 об’єктів символьного типу. Функція free() призначена для звільнення динамічно розподіленої пам’яті. Звільнена пам’ять може знову використовуватись . Наприклад, free(rt1) звільняє блок пам’яті, який було виділено для 40 цілийх чисел. Щоб застосувати динамічний розподіл пам’яті для роботи з масивом потрібно оголосити вказівник, який буде іменем масиву. Потім у програмі потрібно за допомогою функцій розподілу пам’яті виділити необхідний блок пам’яті для масиву і присвоїти адресу першого байту вказівнику. Після роботи з масивом виділену пам’ять треба звільнити. Функції для роботи з динамічною пам’яттю представлено в додатку (табл.4). РОЗРОБКА АЛГОРИТМУ Ні Так Ні Так Ні Так Ні Так Ні Так Ні Так Так Ні Так Код програми мовою С #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]){ int r,s,k,i,t; float si[100][100],c,min,max; printf("Lab rob7\n Medveduk Andriy\n RT-11\n"); printf("kilkist radkiv masuvy:"); scanf("%d",&r); printf("kilkist stovpciv masuvy:"); scanf("%d",&s); printf("vvedit elementu masuvy:\n"); for(k=0;k<r;k++) for(i=0;i<s;i++){ printf("element(%d,%d):",k+1,i+1); scanf("%f",&si[k][i]); } printf("dvovumirnuj masuv:\n"); for(k=0;k<r;k++){ for(i=0;i<s;i++) printf("%.0f ",si[k][i]); puts(""); } min=max=si[0][0]; for(k=0;k<r;k++) for(i=0;i<s;i++) if(si[k][i]<min) min=si[k][i]; else if(si[k][i]>max) max=si[k][i]; printf("najbilchuj element:%.2f\n",max); printf("najmenchuj element:%.2f\n",min); system("PAUSE"); return 0; } НАЛАГОДЖЕННЯ ТА РЕЗУЛЬТАТИ ТЕСТУВАННЯ.  Висновок: на лабораторній роботі я освоїв способи звертання до елементів масивів за допомогою вказівників. Навчився виділяти та використовувати динамічну пам’ять для розміщення масивів даних.
Антиботан аватар за замовчуванням

12.11.2011 02:11-

Коментарі

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

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

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

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

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

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

Admin

26.02.2023 12:38

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