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

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

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

Рік:
2003
Тип роботи:
Звіт про виконання лабораторної роботи
Предмет:
Інші
Група:
КІ

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

Міністерство освіти і науки України НУ „Львівська політехніка” Кафедра ЕОМ  ЗВІТ Про виконання лабораторної роботи №2 Робота із записами, списками на масивах та списками на вказівниках на мові Turbo Paskal Студента групи КІ-17 Кохалика Р.В. Львів 2003 Мета роботи: вивчення способів оголошення та алгоритмів опрацювання даних структурних типів . Теоретичний вступ: Робота із записами на мові Turbo Pascal 1. Оголошення та доступ до полів Запис - це структура даних, що складається із кінцевої кількості логічно зв'язаних компонентів, які називаються полями запису. Від масивів записи відрізняються тим, що їх поля можуть бути різного типу. Поля запису мають імена для посилання на них. Структура оголошення типу запису: type ім'я_типу = record ім'я_поля1: тип_поля1; ім'я_поля2,...,ім'я_поляj: тип_полів2_j; {........................} ім'я_поляn: тип_поляn end; Імена полів запису ї правильними ідентифікаторами Турбо-Паскаля. В межах одного типу запису вони повинні бути унікальними, але можуть співпадати з іншими ідентифікаторами поточного блоку програми, або з полями інших записів. Ім'я поля від типу поля відділяється двокрапкою. Якщо декілька полів мають однаковий тип, то вони можуть задаватися через кому. В якості типу поля може використовуватися довільний допустимий тип. Список полів охоплюється ключовими словами record-end. Після останнього опису поля перед end можна не ставити крапку з комою. Якщо поле запису в свою чергує записом, то такі записи називаються вкладеними. Слід звернути увагу на те, що тип запису описується в блоці type, а сам запис оголошується в блоці var. Приклад оголошення запису: type rozm=record x,y,z:real end; var size1:rozm; var product:record name:string[20]; count:word; size:rozm; price:real end; Доступ до полів запису здійснюється шляхом вказування імені запису та імені поля, розділених крапкою, наприклад: product.name:='Вирiб 001'; product.count:=1; Для вкладених записів необхідне уточнення: product.size.x; product.size.y; Імена полів запису можуть повторюватися на різних рівнях їх вкладеності. 2. Масиви записів Записи можуть бути елементами масивів, наприклад: var x:array[1..5] of product; Тоді доступ до окремих полів здійснюється вказанням індексів елемента масиву, наприклад: x[1].name:='Вирiб 001'; x[1].count:=1; with x[1] do price:=890; Ввід або вивід елементів масиву записів здійснюється у циклі: for i:=1 to 5 do with x[i], size do begin readln(name,count,x,y,z,price); writeln(name,count,x,y,z,price) end; Списки. Реалізація структури даних список за допомогою масиву являє собою не що інше як масив записів, які містять у собі переважно два поля: інформаційне поле і поле Next (або і Prev), тобто „вказівники” на наступний і попередній елементи. В цих полях містяться індекси наступного і попереднього елементів у масиві (там вони можуть бути не по порядку). Номер елемента у списку часто не співпадає з номером його у масиві. У цьому і полягає ідея зв’язаного списку. Список на масиві: const N = 100; type IndexType = 0 .. N; InfoType = integer; ElemType = record Info : InfoType; Next: IndexType; end; ListType = IndexType; SpaceType = array[0..N] of ElemType; var Space : SpaceType; Free : ListType; Список на вказівниках: type InfoType = integer; ListType = ^Elem; Elem = record info : InfoType; next : ListType; end; Завдання для роботи: Ввести інформацію про групу держав. Для кожної держави задані : Назва кількість населення площа кількість лікарень Знайти назву держави з мінімальною кількістю лікарень. Вивести список держав з густиною населення кожної. Тексти програм: Program Masuv; Uses crt; Type TCountry = record Name : string[3]; Population: longint; square : longint; Hospital : longint; end; const n=10; Var book : array [1..n] of TCountry; f : text; code,i : integer; filename : string; _name : string[10]; min : longint; Ro : real; p : string[6]; s : string[3]; h : string[5]; Begin clrscr; filename:='C:\country.txt'; assign(f,filename); reset(f); i:=0; while (not eof(f)) do begin inc(i); readln(f,book[i].name,p,s,h); val(p,book[i].population,code); val(s,book[i].square,code); val(h,book[i].hospital,code); end; Min:=book[1].hospital; For i:=2 to n do if book[i].hospital < min then begin min:=book[i].hospital; _name:=book[i].name; end; Writeln ('--------------------------------------------------'); writeln ('Країна з найменшою кількістю лікарень : ',_name,'.'); writeln ('Кількість лікарень : ',min); Writeln ('--------------------------------------------------'); For i:=1 to n do With book[i] do begin ro:=Population/square; write ('назва : ',name,'; '); Writeln ('Густина населення : ',ro:8:2); end; close(f); readln end. Program M_List; Uses crt, misc; Type TCountry = TInfo; Var Space : TLinkedList; temp : TInfo; f : text; code,i : integer; filename : string; _name : string[10]; min : longint; Ro : real; p : string[6]; s : string[3]; h : string[5]; Begin clrscr; filename:='C:\country.txt'; assign(f,filename); reset(f); i:=0; EmptyList(space); while (not eof(f)) do begin readln(f,temp.name,p,s,h); val(p,temp.population,code); val(s,temp.square,code); val(h,temp.hospital,code); add(space,temp); end; Min:=space[at(space,0)].info.hospital; For i:=1 to getLength(space)-1 do if space[at(space,i)].info.hospital < min then begin min:=space[at(space,i)].info.hospital; _name:=space[at(space,i)].info.name; end; For i:=0 to GetLength(space)-1 do With space[at(space,i)].info do ro:=Population/square; close(f); readln end. -------------------------------------------------------------------------------------------------------------------- Program P_List; Uses crt, p_List; Var ……………….. Begin ……... t:=list; Min:=T^.info.hospital; While T^.next<>nil do begin t:=FindAfter(t); if t^.info.hospital < min then begin min:=T^.info.hospital; _name:=T^.info.name; end; end; t1:=list; While t1<>nil do begin ro:=T1^.info.Population/T1^.info.square; t1:=findAfter(t1); end ; close(f); readln end. На екрані в усіх трьох випадках отримаємо: Країна з найменшою кількістю лікарень: Pol Кількість лікарень: 500 Назва Ukr Густина населення 1083.33 Назва Rus Густина населення 166.77 Назва Ger Густина населення 1200.00 Назва Pol Густина населення 1066.77 Назва Usa Густина населення 2333.33 Назва Bel Густина населення 1935.48 НазваTur Густина населення 940.00 Назва Ita Густина населення 984.62 Назва Spa Густина населення 1010.09 Назва Bra Густина населення 1498.00 Висновок: На цій лабораторній роботі я навчився використовувати такі структури даних, як списки, записи.
Антиботан аватар за замовчуванням

29.12.2011 17:12-

Коментарі

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

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

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

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

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

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

Admin

26.02.2023 12:38

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