Форум: "Начинающим";
Текущий архив: 2006.06.25;
Скачать: [xml.tar.bz2];
ВнизНужна помощь в алгоритме Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.01 c