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

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

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

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

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

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

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

Міністерство освіти і науки України Національний технічний університет України “Київський політехнічний інститут” Кафедра ОТ ЗВІТ про виконання лабораторної роботи № 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:29

Коментарі

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

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

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

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

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

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

Admin

26.02.2023 12:38

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