Другие языки программирования и технологии

Решение задач по паскалю

Подскажите способ решения данной задачи (Решать её за меня не прошу). Можно ли как-то информацию из текстового файла перенести в одномерный массив?
Marat Bg
Marat Bg
539
вот похожая, переделай немного
{Расписание электричек хранится в текстовом файле на диске. каждая запись
содержит название пункта назначения, пометки типа "СВ", "ПВ","КСВ" И время
отправления. написать программу, выполняющую след. условия:
1) корректировку или дополнение расписания с клавиатуры;
2)сортировку по станции назначения или по времени отправления;
3) вывод на экран информации о поездах, отходящих после введенного времени;
4) запись расписания в файл под тем же или новым именем.

Процедура Append( var f: Text ) служит для специального открытия
выходных файлов. Она применима к уже существующим физическим файлам
и открывает из для дозаписи в конец файла. }
program spisoks;
uses crt;
const namebd='bd.txt';
type spisok=record
punkt:string[20];
tip:string[10];
cas,min:integer;
//min,n:integer;
//min:integer;
end;
var
k,y:integer;
tbl:array[1..100] of spisok;
f,f1:Text;
w,c:spisok;
z:char;
procedure Make;
var l:string; i,n:integer;
begin
clrscr;
writeln('создание файла');
assign(f,namebd);
rewrite(f);
z:='y';
while z='y' do begin
with w do begin
Write('пункт отправления ');
ReadLn(punkt);
Write('время отправления (час мин) ');
ReadLn(cas,min);
Write('тип вагонов ("СВ", "ПВ","КСВ") ');
ReadLn(tip);
writeln(f,w.punkt);
writeln(f,w.cas);
writeln (f,w.min);
writeln(f,w.tip);
end;
writeln('Данные успешно добавлены');
writeln('добавить еще?(y/n)');
readln(z);
end;
writeln('Задание закончено');
close(f);
writeln('Данные успешно сохранены. нажмите Enter.');
readln;
end;
procedure Dozap;
var
i,n:integer;
begin
clrscr;
writeln('Дозапись файла');
assign(f,namebd);
Append(f);
z:='y';
while z='y' do begin
with w do begin
Write('пункт отправления ');
ReadLn(punkt);
Write('время отправления (час мин) ');
ReadLn(cas,min);
Write('тип вагонов ("СВ", "ПВ","КСВ") ');
ReadLn(tip);
writeln(f,w.punkt);
writeln(f,w.cas);
writeln (f,w.min);
writeln(f,w.tip);
end;
writeln('Данные успешно добавлены');
writeln('добавить еще?(y/n)');
readln(z);
end;
writeln('Задание закончено');
close(f);
writeln('Данные успешно сохранены. нажмите Enter.');
readln;
end;
procedure show;
var i:integer;
begin
writeln('просмотр файла');
assign(f,namebd);
reset(f);
writeln(' пункт | время |тип вагона');
i:=0;
while not eof(f) do
begin
inc(i);
readln(f,w.punkt);
readln(f,w.cas);
readln(f,w.min);
readln(f,w.tip);
writeln(' ',w.punkt,'| ',w.cas,':',w.min,'| ',w.tip);
end;
readln;
close(f);
end;
Геннадий Ксенчук
Геннадий Ксенчук
95 955
Лучший ответ
Геннадий Ксенчук остальное не влезло, если интересно, пришлю всю прогу в адрес
Marat Bg Спасибо, мне хватило этого кода, чтобы разобраться
Я бы написал как-то так:

readalllines('имятекстовогофайла').select(line->new recordtype(line)).printlines
Рашид
Рашид
66 315
Marat Bg Спасибо, что ответил. Может есть другой способ? Просто ничего не понятно
Рашид что может быть проще, прочитав целиком файл в массив строк, преобразовать его каждую строку в массив нужных нам записей?

P.S. созданием записи я, разумеется, не стал мелочиться ;–)