if (pos('.01.', date) <> 0)
or (pos('.02.', date) <> 0)
or (pos('.12.', date) <> 0) then WriteToWinterFile(date)
else
if (pos('.06.', date) <> 0)
or (pos('.07.', date) <> 0)
or (pos('.08.', date) <> 0) then WriteToSummerFile(date);
Отсортировать зимние и летние месяцы
Задан текстовый файл с датами в формате 1..31.1..12.00..99. Как отсортировать зимние и летние месяцы. Спасибо за помощь.
что значит "отсортировать"?
летние месяцы в один файл, зимние в другой. Мне бы сам процесс сортировки.
Алгоритм простой: читать строку за строкой из файла, определять принадлежность даты к лету/зиме и записывать строку в один из двух уже открытых файлов.
как из даты выделить месяц?
Все что до первой точки - дата. От первой до второй - месяц. copy и val тебе в руки.
А пример, если не трудно.
StrToInt( Copy(Date, 4, 2) );
Вместо 4 подставь Pos '.', тогда не будет зависимости от точного положения месяца в строке.
Код:
Спасибо. Попробую.
Код:
Uses crt;
Var
f1 : text;
f2 : text;
f3 : text;
date : string[8];
Begin
clrscr;
assign (f1, 'Year.txt');
reset(f1);
while not Eof(f1) do
begin
readln(f1, date);
if (pos('.1.', date) <> 0)
or (pos('.2.', date) <> 0)
or (pos('.12.', date) <> 0)
then
begin
assign(f2,'Winter.txt');
rewrite(f2);
writeln(f2, date);
close(f2);
end
else
if (pos('.6.', date) <> 0)
or (pos('.7.', date) <> 0)
or (pos('.8.', date) <> 0)
then
begin
assign(f3,'Summer.txt');
rewrite(f3);
writeln(f3, date);
close(f3);
end
end;
close(f1);
End.
Var
f1 : text;
f2 : text;
f3 : text;
date : string[8];
Begin
clrscr;
assign (f1, 'Year.txt');
reset(f1);
while not Eof(f1) do
begin
readln(f1, date);
if (pos('.1.', date) <> 0)
or (pos('.2.', date) <> 0)
or (pos('.12.', date) <> 0)
then
begin
assign(f2,'Winter.txt');
rewrite(f2);
writeln(f2, date);
close(f2);
end
else
if (pos('.6.', date) <> 0)
or (pos('.7.', date) <> 0)
or (pos('.8.', date) <> 0)
then
begin
assign(f3,'Summer.txt');
rewrite(f3);
writeln(f3, date);
close(f3);
end
end;
close(f1);
End.
Но записывает только по одной дате. если вместо записи в файл направить вывод на экран, то выводит все даты. Почему? И что делать дальше?
Цитата: luser
Сделал вот это
Зачем у тебя фалй пересоздается в цикле? Вынеси оба AssignFile и Rewrite перед циклом, а Close - после. А так у тебя каждая новая дата перезаписывает уже имеющийся файл.