Типізовані файли

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

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

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

Рік:
2010
Тип роботи:
Звіт про виконання лабораторної роботи
Предмет:
Основи програмування та алгоритмічні мови

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

Міністерство освіти і науки України Національний технічний університет України “Київський політехнічний інститут” Кафедра ОТ ЗВІТ про виконання лабораторної роботи № 9 з дисципліни “Основи програмування та алгоритмічні мови” Тема: Типізовані файли Київ 2010 Постановка задачі Створити файл записів з полями: напрямок руху, номер авіарейса, тип літака, кількість вільних місць, вартість квитка, дні виконання рейсу. Визначити сумарну кількість вільних місць на літаки, що відлітають у заданому напрямку у заданий день тижня. Текст програми з коментарями uses crt; const n=3; type days=1..7; dayz=set of days; Nedelya=record Mest:byte; Stoimost:word; end; Reys=record Napravlenie:string[50]; Nomer:word; Tip:string[30]; Dni:dayz; Week:array[days] of nedelya; end; var f:file of reys; function vibor(v:days):string; var s:string; begin case v of 1:s:='Ponedelnik '; 2:s:='Vtornik '; 3:s:='Sreda '; 4:s:='Chetverg '; 5:s:='Pyatnica '; 6:s:='Subbota '; 7:s:='Voskresenie '; end; vibor:=s; end; function proverka(mnog_vo:dayz):boolean; var j,i:byte; b:boolean; begin j:=0; for i:=1 to 7 do if i in mnog_vo then inc(j); if j=7 then b:=true else b:=false; proverka:=b; end; procedure ochistka(var s:reys); var i:byte; j:days; begin with s do begin napravlenie:=''; tip:=''; nomer:=0; dni:=[]; for j:=1 to 7 do with week[j] do begin mest:=0; stoimost:=0; end; end; end; procedure vvod; var i,DenNed:integer; c:char; zapis:reys; begin rewrite(f); i:=0; repeat ochistka(zapis); with zapis do begin inc(i); clrscr; textcolor(0); write('Vvedite dannie o '); textcolor(3); write(i); textcolor(0); writeln(' samolete/rejse:'); textcolor(1); write(' vvedite Nomer samoleta: '); textcolor(4); readln(Nomer); textcolor(1); write(' vvedite Napravlenie dvigeniya samoleta: '); textcolor(4); readln(Napravlenie); textcolor(1); write(' vvedite Tip samoleta: '); textcolor(4); readln(Tip); textcolor(1); writeln(' vvedite Dni ispolneya reysa: '); writeln('1=Ponedelnik | 2=Vtornik | 3=Sreda | 4=Chetverg | 5=Pyatnica | 6=Subbota | 7=Voskresenie: '); c:=readkey; repeat DenNed:=ord(c)-48; if (DenNed>7)or(DenNed<1) then begin writeln('Dni nedeli-eto chisla v promegutke [1..7] '); c:=readkey; continue; end; if DenNed in dni then writeln('vi uge vvodili etot den') else begin textcolor(4); writeln(vibor(DenNed),':'); dni:=dni+[DenNed]; with week[DenNed] do begin textcolor(1); write(' vvedite kolichestvo svobodnix Mest na etot den nedeli: '); textcolor(4); readln(Mest); textcolor(1); write(' vvedite Cenu na bileti: '); textcolor(4); readln(Stoimost); textcolor(1); end; end; textcolor(12); if proverka(dni) then writeln('vi uge vveli vse 7 dney. Nagmite lybuy knopky.') else writeln('Esli xotite vvesti ewe 1 den-nagmite na cifry. Esli Net - to nagmite Enter '); c:=readkey; textcolor(0); until (c=#13)or proverka(dni); end; write(f,zapis); writeln('vvesti ewe 1 samolet v bazu dannix ?'); write('Esli da - to nagmite '); textcolor(4); writeln('"Enter"'); until readkey<>#13; close(f); end; procedure raspisanie; var i,j:integer; s:string; zapis:reys; begin writeln; write('==================================================================='); writeln(' # | Napravlenie: | Dni nedeli: | Tip: | Mest: | Cena: '); write('==================================================================='); for j:=1 to 7 do begin reset(f); s:=vibor(j); while not(eof(f)) do begin read(f,zapis); with zapis do if j in dni then begin textcolor(0); writeln(' ',Nomer:3,' |',Napravlenie:23,' | ',s,'|':15-length(s),Tip:15,' |',week[j].Mest:6,' |',week[j].Stoimost:6); s:='----------'; end; end; close(f); end; write('================================================================='); end; function UP(s:string):string; var i:integer; begin for i:=1 to length(s) do s[i]:=UpCase(s[i]); UP:=s; end; procedure kolmest; var kol:word; day:days; s:string; duraction:string; i:byte; code:integer; zapis:reys; begin reset(f); write('vvedite napravlenie, na kotoroe vi xotite uznatb raspisanie... '); textcolor(12); readln(duraction); textcolor(0); writeln('vvedite na kakoy denb nedeli'); write('1=Ponedelnik | 2=Vtornik | 3=Sreda | 4=Chetverg | 5=Pyatnica | 6=Subbota | 7=Voskresenie: '); textcolor(12); repeat val(readkey,day,code); if ((code=0) and (day>=1) and (day<=7)) then writeln(vibor(day)) else writeln('vvedite denb nedeli [1..7]'); until (day>0)and(day<8); kol:=0; while not(eof(f)) do begin read(f,zapis); with zapis do if (UP(napravlenie)=UP(duraction)) and (day in dni) then inc(kol,week[day].mest); end; s:=vibor(day); textcolor(0); write('Na '); textcolor(1); write(duraction); textcolor(0); write('v bligaiwiy '); textcolor(1); write(s); textcolor(0); if kol<>0 then begin write(' estb '); textcolor(1); write(kol); textcolor(0); end else write(' net'); writeln(' svobodnix mest '); close(f); end; BEGIN textbackground(7); textcolor(0); clrscr; assign(f,'Samolet'); vvod; repeat clrscr; textcolor(0); WriteLn('Result of laboratory work 7'); WriteLn('variant 4'); WriteLn('Executed student of group IP-02 Bondur Vladislav'); textcolor(1); raspisanie; kolmest; write('Nagmite '); textcolor(4); write('`Enter`'); textcolor(0); write(' chtobi naytu drugie reysi ili nagmite druguy knopku chtobi viytu'); until ord(readkey)<>13; END. Блок-схема алгоритму   Результат виконання програми у вигляді відеокопії екрана / / Висновки Програма дозволяє вводити користувачу нескінчену кількість даних про рейси літаків, а саме: номер рейсу, напрям, тип літака, дні виконання, а також кількість вільних місць у ці дні та ціни на квитки, при цьому ведеться підрахунок кількості введених літаків. Введення дня тижня виконується натиском на клавішу цифри від 1 до 7(кожна цифра відповідає дню тижня). У випадку введення дня тижня програма забороняє повторне введення даних про літак на цей день. У разі введення усіх 7 днів тижня програма видасть відповідне повідомлення та запропонує ввести дані про ще один літак(Див. мал. 1). Після введення даних у файл, програма формує список з усіх введених літаків, та сортирує його за днями виконання, отже можна легко знайти літак на шуканий напрям у будь-який день тижня(Див мал. 2). Також надається можливість ввести напрям і день тижня, а програма видасть вам кількість вільних місць з усіх літаків по введеним даним (пошук циклічний, тобто його можна повторити за іншими даними до виходу з програми). Також хочеться зазначити, що програма виконана в кольоровій гамі: легко відрізнити ті символи які були введені вами, та ті підказки, які виводилися протягом роботи програми. Отже перевіримо чи правильно працює програма: Список рейсів отсортований за днями виконання, а подальше сортування відбувається за порядком введення в файл даних. При введенні слова «kiev», та цифри 5(програма сама замінює цифру на день тижня, де це потрібно), було виведено, що у п’ятницю на kiev є 78 вільних місць. Дійсно, згідно таблиці в п'ятницю є: 14 місць на 100 рейсі 7 місць на 600 рейсі 57 місць на 800 рейсі Усього 78 місць. Отже програма працює вірно.
Антиботан аватар за замовчуванням

25.02.2013 16:02-

Коментарі

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

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

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

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

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

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

Admin

26.02.2023 12:38

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