Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.02.2010, 15:16   #1
SVadiks
Пользователь
 
Регистрация: 21.10.2009
Сообщений: 20
Сообщение Сравнение файлов

Здравствуйте, Ребят подкиньте идею как можно реализовать данную програмку:
Дан текстовый файл. Его строка пишется во второй файл, ЕСЛИ она начинается с такой буквы, с которой еще не начинались строки, идущие перед ней.

Пример как должены выглядеть файлы:
1.txt 2.txt
мама мама
мыла раму
раму
SVadiks вне форума Ответить с цитированием
Старый 16.02.2010, 15:22   #2
danekne
Форумчанин
 
Регистрация: 12.02.2007
Сообщений: 360
По умолчанию

создаешь массив символов, куда заносишь букву с которой строка начинается, если еще в массиве такой буквы нет. И тогда же записываешь строку во второй файл. Можно сделать еще быстрее через бинарное дерево, но думаю тебе это не нужно
danekne вне форума Ответить с цитированием
Старый 16.02.2010, 15:24   #3
SVadiks
Пользователь
 
Регистрация: 21.10.2009
Сообщений: 20
По умолчанию

Цитата:
Сообщение от danekne Посмотреть сообщение
создаешь массив символов, куда заносишь букву с которой строка начинается, если еще в массиве такой буквы нет. И тогда же записываешь строку во второй файл. Можно сделать еще быстрее через бинарное дерево, но думаю тебе это не нужно
хм... спасибо сейчас попробую
SVadiks вне форума Ответить с цитированием
Старый 16.02.2010, 16:10   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
создаешь массив символов, куда заносишь букву с которой строка начинается, если еще в массиве такой буквы нет.
вот, тот нечастый случай, когда абсолютно законно и эффективно использовать множества:
Код:
var
   myLetters : set of char;
...
begin
  myLetters := [];
  ... открыть файл f
  while Not Eof(f) do begin
    Readln(s);
    if s[i] not in myLetters then begin 
         пишем строчку s -> во второй файл
         Include(myLetters, s[i]); {запоминаем, что такая буква была}
    end;
end;
....
Serge_Bliznykov вне форума Ответить с цитированием
Старый 18.02.2010, 07:17   #5
SVadiks
Пользователь
 
Регистрация: 21.10.2009
Сообщений: 20
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
вот, тот нечастый случай, когда абсолютно законно и эффективно использовать множества:
Код:
var
   myLetters : set of char;
...
begin
  myLetters := [];
  ... открыть файл f
  while Not Eof(f) do begin
    Readln(s);
    if s[i] not in myLetters then begin 
         пишем строчку s -> во второй файл
         Include(myLetters, s[i]); {запоминаем, что такая буква была}
    end;
end;
....
А скажите пожалуйста s[i] я так понимаю это массив? и какого он типа?
SVadiks вне форума Ответить с цитированием
Старый 18.02.2010, 08:07   #6
danekne
Форумчанин
 
Регистрация: 12.02.2007
Сообщений: 360
По умолчанию

S - это тип string
danekne вне форума Ответить с цитированием
Старый 18.02.2010, 14:00   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от danekne
S - это тип string

Цитата:
А скажите пожалуйста s[i] я так понимаю это массив? и какого он типа?
danekne, абсолютно прав. Дело в том, что строка в Pascal (а потом и в Delphi - по наследию) представляется как array[1..255] of char - т.е. как массив байт. Поэтому к любому символу строки можно обратиться непосредственно по его номеру (индексу): s[i] - это i-й элемент строки s

К слову, в моём коде это же ЯВНАЯ описка.
Нас же интересует ПЕРВЫЙ символ строки.
поэтому правильно так:
Код:
if s[1] not in myLetters then begin 
         пишем строчку s -> во второй файл
         Include(myLetters, s[1]); {запоминаем, что такая буква была}
    end;
p.s. а немногие, наверное, знают, что в том Pascal, что придумал Н.Вирт - не было типа данных string... отсюда и array[..] of char
Serge_Bliznykov вне форума Ответить с цитированием
Старый 18.02.2010, 21:55   #8
SVadiks
Пользователь
 
Регистрация: 21.10.2009
Сообщений: 20
По умолчанию

Спасибо, помогли в трудную минуту
SVadiks вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сравнение файлов jkpro Общие вопросы Delphi 6 05.10.2009 08:57
Сравнение файлов WPROF Общие вопросы Delphi 2 24.08.2009 00:19
Сравнение 2 файлов ForzaJuve Общие вопросы Delphi 9 09.06.2009 23:34
Сравнение 2-х файлов asale Microsoft Office Excel 17 03.06.2007 15:58
Сравнение текстовых файлов BR17UY Общие вопросы Delphi 15 07.05.2007 20:18