Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Использование массива при сортировке файлов

Автор: Vania 8.04.2007 19:34

Никак не могу разобраться с еще одной задачей на файлы :-()
В текстовом файле занесено n >= 10^6 натуральных чисел (каждое число <= 10^4). Получить новый файл, образованный из чисел, встречающихся в исходном файле более одного раза, по возрастанию без повторений.
Буду благодарен за любые идеи..

Автор: volvo 8.04.2007 20:22

Описываешь массив

var ix: array[0 .. 10000] of longint;
(это гарантированно будет корректно работать только для общего количества чисел в файле не превышающего 2147483647, или 231 - 1, поскольку именно это - максимально возможное значение LongInt), обнуляешь его, и потом делаешь так:

var x: integer;
...
while not eof(f) do begin
readln(f, X);
inc(ix[X]);
end;

, таким образом заполняя массив счетчиков повторяемости каждого числа в файле... Ну, а потом просто проходишь по всему массиву Ix, и:
for i := 0 to 10000 do
if ix[i] > 1 then writeln(f_2, i);


Вот, собственно и вся идея...

Автор: Vania 9.04.2007 15:57

Спасибо за идею!