Задача про транспортную систему. Подбор вариантов проезда с учетом кол-ва пересадок, длительности, видов транспорта (самолет, авто, поезд, водн.) — страница 8
отправление: Дата ... 8.5.1998 Пт Время ... 0:0 Максимальное время пути (сутки):3 Максимальная стоимость ... 180 Максимальное число пересадок ... 3 Тип перевозки (авиа,ж.д.,авто,водн.) ... Допустимые классы 123456 ... Tropic Port <GoldenAirBridge004> Lakes Land Отправление: 14:29 8.5.1998 Пт Прибытие: 16:29 8.5.1998 Пт Lakes Land <DiamondAirlines006> Diamond World Отправление: 0:25 9.5.1998 Пт Прибытие: 3:25 9.5.1998 Пт Diamond World <DiamondAirlines003> Beatiful Отправление: 17:20 9.5.1998 Пт Прибытие: 19:20 9.5.1998 Пт цена: 165 - 195 Tropic Port <DeepWater02> Oil City Отправление: 12:0 8.5.1998 Пт Прибытие: 4:40 9.5.1998 Пт Oil City <TransExpress002> Beatiful Отправление: 12:0 9.5.1998 Пт Прибытие: 16:10 10.5.1998 Пт цена: 75 – 105 3. Уменьшение числа пересадок Начальный город ... Tropic Port Конечный город ... Beatiful Дата отправление: Дата ... 8.5.1998 Пт Время ... 0:0 Максимальное время пути (сутки):3 Максимальная стоимость ... 200 Максимальное число пересадок ... 2 Тип перевозки (авиа,ж.д.,авто,водн.) ... Допустимые классы 123456 ... Tropic Port <DeepWater02> Oil City Отправление: 12:0 8.5.1998 Пт Прибытие: 4:40 9.5.1998 Пт Oil City <TransExpress002> Beatiful Отправление: 12:0 9.5.1998 Пт Прибытие: 16:10 10.5.1998 Пт цена: 75 – 105 4. Нереальные условия Начальный город ... Tropic Port Конечный город ... Beatiful Дата отправление: Дата ... 8.5.1998 Пт Время ... 0:0 Максимальное время пути (сутки):3 Максимальная стоимость ... 200 Максимальное число пересадок ... 1 Тип перевозки (авиа,ж.д.,авто,водн.) ... Допустимые классы 123456 ... При данных условиях добраться нельзя 7. 1. 2. 3. 4. 8. 9. Unit Date; interface Var DTErr:boolean; Type Dat=record day:1..31; month:1..12; year:integer; dweek:0..6; time:word; end; Const EWeek:array[0..6] of string[2]=('Mo','Tu','We','Th','Fr','Sa','Sa'); Const RWeek:array[0..6] of string[2]=('Џ','‚в','‘а','—в','Џв','‘Ў','‚б'); procedure newdat(a:dat; delay:word; var b:dat); procedure writedat(b:dat); Function DayDiffer(A,B:dat):Integer; Function STime(st:string):word; Function dweek (a:dat):byte; Procedure DTInput(var d:dat); Procedure SDate(St:string; var a:dat); Implementation uses dos,crt; Function DayInMonth(m:byte; y:integer):byte;forward; procedure SDate(St:string; var a:dat); const mthe:array[1..12] of string[3] =('JAN','FEB','MAR','APR','MAY','JUN','JUL','AUG','SEP','OCT','NOV','DEC'); const mthru:array[1..12] of string[3] =('џЌ‚','”…‚','ЊЂђ','ЂЏђ','ЊЂ‰','ћЌ','ћ‹','Ђ‚ѓ','‘…Ќ','ЋЉ’','ЌЋџ','„…Љ'); const mthrl:array[1..12] of string[3] =('пў','䥢','¬ а',' Їа','¬ ©','Ёо','Ёо«',' ўЈ','бҐ','®Єв','®п','¤ҐЄ'); var i,j,e:byte; mode:byte; S:word; err:boolean; D,M,Y,wd:word; c:shortint; Procedure add(mode:byte;s:word;var a:dat); begin case mode of 1:if (s>0) and (s<=31) then A.day:=S else DTErr:=true; 3:if (s>0) and (s<=12) then A.month:=S else DTErr:=true; 5:if s>=100 then A.year:=S else A.year:=S+100*(Y div 100); end; end; begin DTErr:=false; GetDate(Y,M,D,wd); e:=length(st); i:=1; mode:=0; while (i<=e) do begin c:=ord(st[i])-ord('0'); if ((mode mod 2)=0) and (c>=0) and (c<=9) then begin S:=c; inc(mode) end else if (c<=9) and (c>=0) then S:=S*10+c else if (mode mod 2)=1 then begin Add(mode,S,a); Inc(mode) end; if (mode=2) then for j:=1 to 12 do if (mthe[j,1]=upcase(st[i])) and (mthe[j,2]=upcase(st[i+1])) and (mthe[j,3]=upcase(st[i+2])) or ((mthru[j,1]=st[i]) or (mthrl[j,1]=st[i])) and ((mthru[j,2]=st[i+1]) or (mthrl[j,2]=st[i+1])) and ((mthru[j,3]=st[i+2]) or (mthrl[j,3]=st[i+2])) then begin add(3,j,a); mode:=4 end; inc(i); end; if (mode mod 2)=1 then add(mode,S,a); if mode<1 then
Похожие работы
- Практические занятия
- Рефераты
- Рефераты