DevioLab CRYPTO TRADING AUTOMATION
LIVE
AUTOMATED CRYPTO TRADING • BINANCE
Автоматизуйте свій криптопортфель
Торгові боти DevioLab аналізують крипторинок, автоматично відкривають і закривають позиції та керують вашим портфелем на Binance 24/7.
CRYPTO 80 Bots
BINANCE Spot Trading
TRADING 24 / 7
Спробувати DevioLab
deviolab.com

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

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

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

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

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

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

Міністерство освіти та науки України Національний університет «Львівська політехніка» Інститут телекомунікацій, радіоелектроніки та електронної техніки Кафедра теоретичної радіотехніки та радіовимірювань Звіт з лабораторної роботи №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:52

Коментарі

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

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

Нічого не вибрано
0%

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

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

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

Admin

26.02.2023 12:38

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