Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.06.25;
Скачать: CL | DM;

Вниз

Нужна помощь в алгоритме   Найти похожие ветки 

 
Need Help   (2006-06-08 07:05) [0]

Задание такое.(срочное)

Определить типизированный файл F, его компоненты числа Integer. Откоректировать этот файл, остовляя из совпадающих чисел одно. Т.е. допустим есть файл, в нем числа 1 2 3 4 3 5 2. Нужно этот файл перезаписать(или создать новый, без разницы) с такими числами - 1 2 3 4 5 , т.е убрать повторяющиеся.
Кто может помочь? Оч. срочно надо.
З.Ы. Все это на Pascal"e


 
tButton ©   (2006-06-08 07:13) [1]

на паскааале?
легко
дай десять минут


 
tButton ©   (2006-06-08 07:23) [2]

объект
type
 tMyList = object
   d: array of integer;
   procedure Add(n: integer);
   function Find(n: integer): integer;
   procedure Reset;
 end;

procedure tMyList.Add(n: integer);
begin
 SetLength(d, high(d)+2)
 d[high(d)]:=n;
end;

function tMyList.Find(n: integer);
var
 i, n: integer;
begin
 result:=-1;
 n:=high(d);
 if n=-1 then exit;
 for i:=0 to n do
   if d[i]=n then begin
     result:=i;
     exit;
   end;
end;

procedure tMyList.Reset;
begin
 SetLength(d, 0);
end;


основной код
var
 f: file of integer;
 l: tMyList;
 i, n: integer;

Assign(f, "myfile.dat");
Reset(f);
l.Reset;
for i:=1 to FileSize(f) do
begin
 Read(f, n);
 if l.Find(n)=-1
   then l.Add(n);
end;
Close(f);
Assign(f, "myfile.dat");
Rewrite(f);
n:=high(l.d);
if n<>-1 then
for i:=0 to n do
Write(f, l.d[i]);
Close(f);


реализация немного дельфийская
+ не совсем помню как там в паскале с динамическими массивами и определением размера файла
но в общих чертах это выглядит так
есть некий массив
в котором хранятся уникальные числа
1. читаем числа из файла
1.1. ищем число в масииве
1.1.1. если число не найдено - добавляем его в массив
2. сохраняем массив в файл


 
Need Help   (2006-06-08 07:54) [3]

Хм....ну допустим у меня есть массив с первоночальными числами(уникальными, как ты сказал) (1 2 3 4 3 2).
1. Прочитали числа из файла (1 2 3 4 3 2)
1.1 Ищем число в массиве..Ищем сначала 1 ? так он ее в любом случае найдет, и тогда ниче не запишеться в файл...мож ты не так понял?

Пример.

Есть файл с числами - 1 2 3 4 3 2 5
Создаем новый(или перезаписываем старый) - 1 2 3 4 5
Т.е. если какие то числа повторяються(как 2 и 3) то, мы записываем вместо 2 повторившихся только одно число.


 
tButton ©   (2006-06-08 07:58) [4]

не понял. т.е. я понял, что ты не понял

изначально массив пустой
ты читаешь файл по доному числу за раз
и проверяешь есть ли прочитаное числов в массиве
если нету - добавляешь его в массив
если есть - не добавляешь, а читаешь следующее
т.о. к концу чтения файла у тебя в массиве будут лежать только уникальные числа, потому что ты не будешь добавлять в массив те числа, которые там уже есть
всё. все уникальные числа у тебя уже в массиве
тебе остаётся только сохранить числа из этого массива в файл


 
MBo ©   (2006-06-08 08:02) [5]

1. Прочитать файл в массив
2. Отсортировать массив
3. Одним проходом удалить дубликаты
4. Сохранить массив



Страницы: 1 вся ветка

Текущий архив: 2006.06.25;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.033 c
3-1146039439
Сергей А.
2006-04-26 12:17
2006.06.25
Как вызвать хранимую функцию


2-1149605973
redlord
2006-06-06 18:59
2006.06.25
как передать чужому окну (по недел) код нажатой клавиши


15-1148986185
Dzhin
2006-05-30 14:49
2006.06.25
Йога


4-1142453912
Lucefer
2006-03-15 23:18
2006.06.25
Передача сообщения из порождённого TThread в родительский сервис


15-1149178238
Зм1й
2006-06-01 20:10
2006.06.25
Принтер Epson Photo R800