Адміністрація вирішила продати даний сайт. За детальною інформацією звертайтесь за адресою: rozrahu@gmail.com

Динамічний розподіл пам’яті

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

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

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

Рік:
2015
Тип роботи:
Лабораторна робота
Предмет:
Інформаційні технології

Частина тексту файла

Міністерство освіти і науки України Національний університет "Львівська політехніка"  Лабораторна робота №13 Динамічний розподіл пам’яті Мета роботи: освоїти розміщення даних в оперативній пам’яті, динамічне виділення пам‘яті. Завдання: Написати програму, яка реалізовує: 1. Ввід даних (згідно варіанту) по кожному елементу списку 2. Обробку даних згідно методу, обраного користувачем 3. Вивід результатів. При вводі даних необхідно реалізувати зчитування введених даних з клавіатури, виділення необхідної пам‘яті та запит про завершення вводу. Користувач повинен мати можливість вибору методу обробки даних і вибору завершення роботи Якщо користувачем обрано завершення роботи, то перед завершенням роботи необхідно звільнити пам’ять, виділену під роботу програми. Індивідуальне завдання: Дані елемента списку Дані про студента: 1. Прізвище 2. Ім‘я 3. Група 4. № кімнати в гуртожитку (ціле число; 0-якщо студент не проживає в гуртожитку) 5. Рейтинг(дійсне число 0-100 ) Сортувати за: 1.Прізвищем 2.Ім’ям 3.Номером кімнати гуртожитка 4.Рейтингом Аналіз завдання: Для зручності організації даних я використаю структуру, в якій будуть всі дані для певного студента. Для економії пам’яті я використаю функцію mallock - динамічний розподіл пам’яті. Перед використанням функції scanf потрібно очистити пам’ять функцією fflush(stdin) для забезпечення правильної роботи програми. Алгоритм програми:   Текст програми: #include <conio.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX_SIZE 20 struct Klass { char surname[20]; char name[10]; char gr[5]; int hurt; unsigned int rating; }; void getBoards(struct Klass **); void printBoards(struct Klass **); void Sortsurname(struct Klass **,unsigned n); void Sorthurt(struct Klass **,unsigned n); void Sortrating(struct Klass **,unsigned n); int main() { char key; unsigned size; unsigned i,j=0; printf("Vvedit’ chuslo ludey:\n=> "); scanf("%u", &size); size = ((size <= MAX_SIZE) ? (size): (MAX_SIZE)); struct Klass *ptr[size] ; struct Klass **pptr[size]; for(i=0;i<size;i++) { pptr[i]=&ptr[i]; ptr[i]=malloc(sizeof(struct Klass)); printf("People #%d. It remains to add another %d people\n",i+1,size-i-1) ; getBoards(pptr[i]); } system("cls"); puts("Sortuvatu?(y - yes, n - no)") ; scanf("%s",&key); if(key== 'y' ) { int m; do { puts("Jak sortuvatu?"); puts("_______________________"); puts("1 = sort by surname"); puts("2 = sort by hurtojutuk number"); puts("3 = sort by rating"); puts("4 = quit"); puts("_______________________"); scanf("%d",&m); switch(m) { case 1: puts("\tSort by surname"); for(j=0;j<size;j++) { for(i=0;i<size-1;i++) { Sortsurname(pptr[i],size); } } for(i=0;i<size;i++) { puts("____________________________"); printBoards(pptr[i]); puts("____________________________"); } break; case 2: puts("\tSort by hurt"); for(j=0;j<size;j++) { for(i=0;i<size-1;i++) { Sorthurt(pptr[i],size); } } for(i=0;i<size;i++) { puts("____________________________"); printBoards(pptr[i]); puts("____________________________"); } break; case 3: puts("\tSort by rating"); for(j=0;j<size;j++) { for(i=0;i<size-1;i++) { Sortrating(pptr[i],size); } } for(i=0;i<size;i++) { puts("____________________________"); printBoards(pptr[i]); puts("____________________________"); } break; case 4: puts("Enjoy!!! :-)"); for(i=0;i<size;i++) { free (ptr[i]); } break; } puts(""); }while(m!=4) ; } system("PAUSE"); return 0; } void Sortsurname(struct Klass **pptr,unsigned n ){ int i=0; struct Klass temp; for(i=0;i<n-1;i++) { if(strcmp ((*pptr)->surname, ( *(pptr+1))->surname ) >0 ) { temp=**(pptr); **(pptr)=**(pptr+1); **(pptr+1)=temp; } } } void Sorthurt(struct Klass **pptr,unsigned n ){ int i=0; struct Klass temp; for(i=0;i<n-1;i++) { if((*pptr)->hurt<(*(pptr+1))->hurt) { temp=**(pptr); **(pptr)=**(pptr+1); **(pptr+1)=temp; } } } void Sortrating(struct Klass **pptr,unsigned n ){ int i=0; struct Klass temp; for(i=0;i<n-1;i++)...
Антиботан аватар за замовчуванням

20.04.2017 17:04

Коментарі

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

Завантаження файлу

Якщо Ви маєте на своєму комп'ютері файли, пов'язані з навчанням( розрахункові, лабораторні, практичні, контрольні роботи та інше...), і Вам не шкода ними поділитись - то скористайтесь формою для завантаження файлу, попередньо заархівувавши все в архів .rar або .zip розміром до 100мб, і до нього невдовзі отримають доступ студенти всієї України! Ви отримаєте грошову винагороду в кінці місяця, якщо станете одним з трьох переможців!
Стань активним учасником руху antibotan!
Поділись актуальною інформацією,
і отримай привілеї у користуванні архівом! Детальніше

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

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

пропонує роботу

Admin

26.02.2019 12:38

Привіт усім учасникам нашого порталу! Хороші новини - з‘явилась можливість кожному заробити на своїх знаннях та вміннях. Тепер Ви можете продавати свої роботи на сайті заробляючи кошти, рейтинг і довіру користувачів. Потрібно завантажити роботу, вказати ціну і додати один інформативний скріншот з деякими частинами виконаних завдань. Навіть одна якісна і всім необхідна робота може продатися сотні разів. «Головою заробляти» продуктивніше ніж руками! :-)

Новини