|
Главная | Правила | Регистрация | Дневники | Справка | Пользователи | Календарь | Поиск | Сообщения за день | Все разделы прочитаны |
|
Опции темы | Опции просмотра |
03.09.2012, 18:54 | #11 (permalink) | |
Member
Регистрация: 03.09.2012
Сообщений: 16
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Цитата:
|
|
03.09.2012, 18:54 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Прочитайте схожие топики, это не должно занять много времени Паскаль. Задача по преобразованию Задача на Паскаль Задача, Паскаль Задача. Паскаль |
03.09.2012, 23:21 | #14 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Там всё выводится. В частности, это - посредством команд
Код:
Read_Data('train_3',M,train); Show_Data(train,M); Оттранслируйте программу, запустите - и всё увидите. Перед этим советую уменьшить количество поездов, изменив значение константы n, поставив, например, n=3. Иначе уж очень долго и скучно. |
04.09.2012, 14:31 | #15 (permalink) |
Member
Регистрация: 03.09.2012
Сообщений: 16
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
а если задача должна остаться как исходник,как поместить в типизированный файл f3,то что находится в f2?
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
04.09.2012, 17:11 | #16 (permalink) | |
Member
Регистрация: 03.09.2012
Сообщений: 16
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Цитата:
|
|
04.09.2012, 18:12 | #17 (permalink) | ||
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Цитата:
Прежде всего, в листинге куча ошибочных пробелов, типа Цитата:
Потом - объясните толком, что требуется? Есть два варианта: с текстовыми файлами и файлами записей. Обязательно создавать гибрид? |
||
04.09.2012, 19:51 | #20 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Ну вроде как добил. Получите. Основная ошибка в том, что Вы кое о чем забыли, а именно о том, что после поиска в текстовый файл добавляются строки, содержащие информацию об отобранных поездах, и на них-то процедура преобразования и спотыкается. Кстати, и сама эта процедура у Вас излишне усложнена: совершенно нет никакой необходимости вычленять числовые форматы из строкового: достаточно лишь правильно организовать считывание пункта назначения, а остальные данные так и читать, как числа.
Функцию FileExists (она закомментарена) можете удалить. Просто у меня такой среди стандартных нету, вот и пришлось добавить самодельную. Код:
program Project2a; {$APPTYPE CONSOLE} uses SysUtils, Windows; const n=20; type traininfo=record numbertrain:integer; destination:string[15]; timeofdeparture_h:integer; timeofdeparture_m:integer; sv:Integer; compartment:integer; plackart:integer; end; tmas=array [1..n] of traininfo; var train:tmas; i,t_h,t_m:Integer; time1,time2:real; destination,s:string; f,f1:Text; f3:file of traininfo ; (* //----------------------------------------------------------------- function FileExists(Name:String):Boolean; Var ffe:Text; IOres:Integer; begin {$I-} Assign(ffe,Name); Reset(ffe); IOres:=IOResult; If IOres=0 then Close(ffe); FileExists:=IOres=0; {$I+} end; *) //----------------------------------------------------------------- procedure vvoddannuh; //заполнение файла данными var i,numbertrain,timeofdeparture_h,timeofdeparture_m, sv,compartment,plackart:Integer; destination:String; f:Text; begin Assign(f,'train_1.txt'); Rewrite(f); writeln (f,'------------------------------------------------------------'); writeln (f,'номер / пункт назначения / время отпр. / св / купе / плацк. '); writeln (f,'------------------------------------------------------------'); for i:=1 to n do begin Write('Введите номер поезда: '); Readln(numbertrain); Write('Введите пункт назначения: '); Readln(destination); Write('Введите время отправления (чч мм): '); Readln(timeofdeparture_h,timeofdeparture_m); Write('Введите количество свободных мест в СВ: '); Readln(sv); Write('Введите количество свободных мест в купе: '); Readln(compartment); Write('Введите количество свободных мест в плацкарте: '); Readln(plackart); writeln(f,numbertrain:5,destination:19,timeofdeparture_h:8,timeofdeparture_m:3,sv:8,compartment:7,plackart:8); writeln end; Close(f) end; //----------------------------------------------------------------- Procedure vuvoddannuh(a:tmas); //вывод данных в файл var i:Integer; f:Text; begin Assign(f,'train_2.txt'); Rewrite(f); writeln (f,'------------------------------------------------------------'); writeln (f,'номер / пункт назначения / время отпр. / св / купе / плацк. '); writeln (f,'------------------------------------------------------------'); for i:=1 to n do writeln(f,a[i].numbertrain:5,a[i].destination:19,a[i].timeofdeparture_h:8,a[i].timeofdeparture_m:3,a[i].sv:8,a[i].compartment:7,a[i].plackart:8); Close(f) end; //------------------------------------------------------------------------------------------ Procedure Read_data(Var a: tmas); //считывание информации Var i,j:Integer; f:Text; C:Char; begin Assign(f,'train_1.txt'); Reset(f); readln(f); readln(f); readln(f); for i:=1 to n do begin read(f,a[i].numbertrain); repeat read(f,C); until C<>' '; a[i].destination:=C; repeat read(f,C); if C<>' ' then a[i].destination:=a[i].destination+C; until C=' '; readln(f,a[i].timeofdeparture_h,a[i].timeofdeparture_m,a[i].sv,a[i].compartment,a[i].plackart); end; Close(f) end; //------------------------------------------------------------------------------------------ Procedure Swap(Var k, l: traininfo); //метод пузырька Var m:traininfo; begin m:=k; k:=l; l:=m; end; // -------------------------------------------------------------------------- Procedure sortirovka; //процедура сортировки var x:traininfo; i,j:Integer; begin for i:=1 to n-1 do for j:=1 to n-i do if train[j].destination>train[j+1].destination then Swap(train[j],train[j+1]); end; //-------------------------------------------------------------------------------- Procedure search_train(a:tmas;destination:string;tm1,tm2:real); //поиск по заданным параметрам var i,S:Integer; f:Text; begin Assign(f,'train_2.txt'); Append(f); Writeln(f); S:=0; for i:=1 to n do if (a[i].destination=destination) and (a[i].timeofdeparture_h+a[i].timeofdeparture_m/100>=tm1) and (a[i].timeofdeparture_h+a[i].timeofdeparture_m/100<=tm2) then begin Writeln(f,'Номер поезда: ',a[i].numbertrain); Writeln(f,'Пункт назначения: ',a[i].destination); Writeln(f,'Время отправления: ',a[i].timeofdeparture_h,'-',a[i].timeofdeparture_m); Writeln(f,'Количество мест в св: ',a[i].sv) ; Writeln(f,'Количество мест в купе: ',a[i].compartment); Writeln(f,'Количество мест в плацкарте: ',a[i].plackart); Writeln(f); S:=S+1 end; if S=0 then writeln(f,'Таких поездов нет'); Close(f); end; //-------------------------------------------------------------------------------- procedure vvoddannuhtype; var s:string; s19:string[19]; z:traininfo; {k:integer;} begin Assign(f1,'train_2.txt'); Reset(f1); Assign(f3,'train_3'); Rewrite(f3); for i:=1 to 3 do readln(f1); for i:=1 to n do begin read(f1,z.numbertrain); read(f1,s19); s:=s19; readln(f1,z.timeofdeparture_h,z.timeofdeparture_m,z.sv,z.compartment,z.plackart); while pos(' ',s)>0 do delete(s,pos(' ',s),1); z.destination:=s; write(f3,z); end; Close(f1); close(f3); end; Procedure vuvoddannuhtype; var z:traininfo; begin reset(f3); writeln ('------------------------------------------------------------'); writeln ('номер/ пункт назначения / время отпр. / св /купе / плац. '); writeln ('------------------------------------------------------------'); while not eof(f3) do begin read(f3,z); writeln(z.numbertrain:5,z.destination:19,z.timeofdeparture_h:8,z.timeofdeparture_m:3,z.sv:8,z.compartment:7,z.plackart:8); end; close(f3); end; begin SetConsoleOutputCP(1251); if FileExists('train_1.txt')then begin read_data(train); assign(f,'train_1.txt'); reset(f); while not eof(f) do begin readln(f,s); writeln(s); end; close(f); sortirovka; writeln; vuvoddannuh(train); writeln; Writeln('Введите пункт назначения:'); Readln(destination); write('Введите период времени (формат ввода чч мм) с '); readln(t_h,t_m); time1:=t_h+t_m/100; write('по '); Readln(t_h,t_m); time2:=t_h+t_m/100; search_train(train,destination,time1,time2); assign(f1,'train_2.txt'); reset(f1); while not eof(f1) do begin readln(f1,s); writeln(s) end; close(f1); vvoddannuhtype; vuvoddannuhtype end else vvoddannuh; Writeln('Для выхода нажмите "Enter"'); readln end. |
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
Опции темы | |
Опции просмотра | |
|
|