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

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

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

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 21.04.2007, 15:17   #1
ATL
Форумчанин
 
Аватар для ATL
 
Регистрация: 26.01.2007
Сообщений: 278
Восклицание Поиск одинаковых строк в файле

Помогите написать программу на Delphi:
Указывается путь к txt-файлу.
В файле текстовые строки. Нужна программа, которая будет искать одинаковые строки, и удалять их. То есть, циклом пройтись:
Если такой же строки нету - занести её в другой текстовик.
И так далее.

К примеру, в текстовике1:
1234
3412
3412
3412
6345
1234

Программа должна обработать текстовик1 и создать текстовик2 с содержимым:
1234
3412
6345


=======
Очень нужна программа, сдавать в коледж через неделю нужно!

Последний раз редактировалось ATL; 21.04.2007 в 16:09.
ATL вне форума
Старый 22.04.2007, 15:28   #2
Сильванович Михаил
Студент
Форумчанин
 
Регистрация: 10.11.2006
Сообщений: 196
По умолчанию

Писать за тя не буду, но могу дать пару советов:
I.

Вар.1) можно отсортировать файлик 1 по алфавиту, тогда
будет проще обходить цикл и выбрасывать повторяющиеся

Вар.2)копируем 1 в 2, далее работаем со 2м:
- берем первую строку, ищем вхождения - повторы удаляем
- берем вторую и т.д.

II. Для работы с подобными файлами лучше использовать TStrings:
Код:
var x: TStrings;
...
Код:
x:=TStringList.Create;
x.LoadFromFile('filename.txt');
Visita Interiorem Terrae Rectificando Operae Lapidem...
Сильванович Михаил вне форума
Старый 22.04.2007, 19:45   #3
zetrix
Delphi/C++/C#
Участник клуба
 
Аватар для zetrix
 
Регистрация: 29.10.2006
Сообщений: 1,972
По умолчанию

У меня подобная задача была 2 года назад на олимпиаде
Вариант Михаила не прошёл 3 тест (на время), пришлось делать через множества (set of) - отсев дублей за 1 проход файла.
zetrix вне форума
Старый 22.04.2007, 21:35   #4
Shuraken
Форумчанин
 
Аватар для Shuraken
 
Регистрация: 16.04.2007
Сообщений: 298
По умолчанию

procedure TForm1.Button1Click(Sender: TObject);
var
FLoad, FSave: TStringList;
i: integer;
tmp: string;
begin
FLoad := TStringList.Create;
try
FSave := TStringList.Create;
try
FLoad.LoadFromFile('file1.txt');
for i := 0 to FLoad.Count - 1 do
begin
tmp := FLoad[i];
if FSave.IndexOf(tmp) = -1 then
FSave.Add(tmp);
end;
FSave.SaveToFile('file2.txt');
finally
FSave.Free;
end;
finally
FLoad.Free;
end;
end;

Не надо ничего усложнять, все тривиально. Данные классы сами могут покопаться в себе и найти дубляжи.
Не надо ничего усложнять. Все достаточно тривиально.

Последний раз редактировалось Shuraken; 22.04.2007 в 22:18.
Shuraken вне форума
Старый 23.04.2007, 00:07   #5
ATL
Форумчанин
 
Аватар для ATL
 
Регистрация: 26.01.2007
Сообщений: 278
По умолчанию

Спасибо всем! Буду добавлять к этому интерфейс.
ATL вне форума
Старый 23.04.2007, 13:13   #6
zetrix
Delphi/C++/C#
Участник клуба
 
Аватар для zetrix
 
Регистрация: 29.10.2006
Сообщений: 1,972
По умолчанию

Цитата:
Не надо ничего усложнять, все тривиально. Данные классы сами могут покопаться в себе и найти дубляжи
При больших файлах (>60000 строк) - не пройдёт по времени (1-2 сек - это максимум), но раз этого не требовалось...
Я за хорошее программирование
zetrix вне форума
Старый 23.04.2007, 18:22   #7
Carbon
JAVA BEAN
Участник клуба
 
Аватар для Carbon
 
Регистрация: 22.04.2007
Сообщений: 1,329
По умолчанию

При больших файлах лучше юзать пирамидальную сортировку или Шелла.
Carbon вне форума
Старый 27.04.2007, 19:50   #8
ATL
Форумчанин
 
Аватар для ATL
 
Регистрация: 26.01.2007
Сообщений: 278
По умолчанию

Скрипт переделал по новым требованиям, добавил интерфейс и анимацию окна.
Ещё один вопрос:
Необходимо, чтобы программа реагировала на регистр.
Как это можно сделать?
ATL вне форума
Старый 29.04.2007, 11:58   #9
ATL
Форумчанин
 
Аватар для ATL
 
Регистрация: 26.01.2007
Сообщений: 278
По умолчанию

Ну помогите с регистром букв, пожалуйста
ATL вне форума
Старый 29.04.2007, 12:17   #10
zetrix
Delphi/C++/C#
Участник клуба
 
Аватар для zetrix
 
Регистрация: 29.10.2006
Сообщений: 1,972
По умолчанию

Т.е. чтоб реагировала? Чтоб 'ABC' и 'abc' воспринимались как разные строки? Или наоборот, чтоб одинаковыми были?
zetrix вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск одинаковых строк Demitriy Microsoft Office Excel 45 26.07.2010 08:50
Расчет числа строк в типизированном файле 1234 Паскаль, Turbo Pascal, PascalABC.NET 6 20.05.2008 11:14
Колиество строк в файле Аlex Помощь студентам 9 17.05.2008 21:57
ПОИСК ОДИНАКОВЫХ СЛОВ (не проходите мимо!) MAD Помощь студентам 12 24.12.2007 22:41
Поиск в файле asale Microsoft Office Excel 1 15.05.2007 23:33