Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Отсортировать зимние и летние месяцы

33K
06 мая 2010 года
luser
10 / / 10.02.2008
Задан текстовый файл с датами в формате 1..31.1..12.00..99. Как отсортировать зимние и летние месяцы. Спасибо за помощь.
1.8K
06 мая 2010 года
LM(AL/M)
332 / / 20.12.2005
что значит "отсортировать"?
33K
06 мая 2010 года
luser
10 / / 10.02.2008
летние месяцы в один файл, зимние в другой. Мне бы сам процесс сортировки.
253
06 мая 2010 года
Proger_XP
1.5K / / 07.08.2004
Не знаете, в чём разница между летними и зимними месяцами? :)
Алгоритм простой: читать строку за строкой из файла, определять принадлежность даты к лету/зиме и записывать строку в один из двух уже открытых файлов.
33K
07 мая 2010 года
luser
10 / / 10.02.2008
как из даты выделить месяц?
247
07 мая 2010 года
wanja
1.2K / / 03.02.2003
Все что до первой точки - дата. От первой до второй - месяц. copy и val тебе в руки.
33K
07 мая 2010 года
luser
10 / / 10.02.2008
А пример, если не трудно.
253
07 мая 2010 года
Proger_XP
1.5K / / 07.08.2004
Date := 'dd.mm.yy';
StrToInt( Copy(Date, 4, 2) );

Вместо 4 подставь Pos '.', тогда не будет зависимости от точного положения месяца в строке.
1.8K
07 мая 2010 года
LM(AL/M)
332 / / 20.12.2005
чтобы не мучаться с парсингом дат предлагаю такой вариант:

 
Код:
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);
33K
07 мая 2010 года
luser
10 / / 10.02.2008
Спасибо. Попробую.
33K
09 мая 2010 года
luser
10 / / 10.02.2008
Сделал вот это:
Код:
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.


Но записывает только по одной дате. если вместо записи в файл направить вывод на экран, то выводит все даты. Почему? И что делать дальше?
253
09 мая 2010 года
Proger_XP
1.5K / / 07.08.2004
Цитата: luser
Сделал вот это


Зачем у тебя фалй пересоздается в цикле? Вынеси оба AssignFile и Rewrite перед циклом, а Close - после. А так у тебя каждая новая дата перезаписывает уже имеющийся файл.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог