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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.02.2010, 22:44   #1
Айдар
Форумчанин
 
Регистрация: 20.06.2009
Сообщений: 195
По умолчанию Не могу дописать, Паскаль строки

вот такая задача из файла прочитать данные:
12345
321
5432
321

надо просматреть файл и удалить дубликаты, башка не варит кто поможет

Код:
program baza;
var
  f,f2:text;
  url,url2 : string;
  i : integer;

begin
  assign(f,'baza1.txt');
  reset(f);
  assign(f2,'baza.htm');
  rewrite(f2);
  while not eof(f) do
  begin
    readln(f,url);
    readln (f,url2)
    if url=url2 then delete(url2,1,15);
    writeLn(f2,url);
  end;
  close(f);
  close(f2);
  writeLn('Done');
  readln;
end.
Айдар вне форума Ответить с цитированием
Старый 09.02.2010, 23:47   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

нет, так не получится.
Самый простой (алгоритмически) способ — это задать в программе ограничение на размер обрабатываемого текстового файла, прочитать текст в массив (ограничение как раз и будет равно размеру массива) и дальше уже искать повторы в массиве.
схематично это будет так:
Код:
  Открыть файл 1
  Счётчик строк в массиве := 0;
  пока не конец файла 1 делать:
     прочитать очередную строчку
     поискать её в массиве (цикл от 1 до Счётчик строк в массиве)
     если не нашли такую же:
        Счётчик строк в массиве := Счётчик строк в массиве + 1;
        Massiv[Счётчик строк в массиве] := Строчка;
     (если такая уже в массиве есть - ничего не делаем!)
   завершить цикл чтения файла
 закрыть файл
открыть файл 2 
и записать в него все строчки из массива
закрыть файл 2
p.s. конечно, вот здесь ГОРАЗДО лучше (но и сложнее) использовать динамические структуры, например, списки, коллекции и т.п.

p.p.s. на Дельфи эта задача решается на порядок проще - там уже есть компоненты (TStringList), которые упростят решение задачи и снимут ограничение на размер входного файла.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 09.02.2010, 23:52   #3
psycho-coder
Участник клуба
 
Аватар для psycho-coder
 
Регистрация: 06.04.2009
Сообщений: 1,524
По умолчанию

Удалить дубликаты можно с помощью метода сортировки "Пузырька".
Код:
While not EOF(f) do
begin
  readln(f, url);
  While not EOF(f) do
  begin
    readln(f, url2);
    if url = url2 then Delete(url2, 1, 15);
  end;
end;
P.S. Писал на форум, так что могут быть ошибки.
psycho-coder вне форума Ответить с цитированием
Старый 10.02.2010, 16:18   #4
Айдар
Форумчанин
 
Регистрация: 20.06.2009
Сообщений: 195
По умолчанию

чето не получается(((

Код:
program baza;
var
  f,f2:text;
  url,url2 : string;
  i : integer;

begin
  assign(f,'baza1.txt');
  reset(f);
  assign(f2,'pass.htm');
  rewrite(f2);
  While not EOF(f) do
  begin
  readln(f, url);
    readln(f, url2);
    if url = url2 then Delete(url2, 1, 15);
     writeLn(f2,url,'<br>');
  end;
  close(f);
  close(f2);
  writeLn('Done');
  readln;
end.
Айдар вне форума Ответить с цитированием
Старый 10.02.2010, 16:28   #5
psycho-coder
Участник клуба
 
Аватар для psycho-coder
 
Регистрация: 06.04.2009
Сообщений: 1,524
По умолчанию

А куда вложенный цикл дели?
psycho-coder вне форума Ответить с цитированием
Старый 10.02.2010, 21:45   #6
Айдар
Форумчанин
 
Регистрация: 20.06.2009
Сообщений: 195
По умолчанию

всеравно не получается(((
Айдар вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дописать строки в конец *.ini Shouldercannon Общие вопросы Delphi 10 12.01.2010 14:30
Паскаль Не получаеться дописать прогу помогите ПЛИЗ ученик91 Помощь студентам 3 08.12.2009 19:50
С++ не могу дописать kolashik Помощь студентам 1 31.10.2009 17:40
ассемблер, не могу дописать... blackbanny Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 14 05.10.2009 13:32
Помогите дописать программу на Delphi 7 не могу понять что здесь не так matrix8325 Помощь студентам 1 30.04.2009 23:34