IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Сортировка файла
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 29
Пол: Мужской

Репутация: -  0  +


Доброго времени суток.
Вот задача упорядочения данных файла.(файл неструктурированный!) (не могу решить вообще :-), выручайте!)

В файле содержится инфа в таком виде:
<название_объекта_1>, <размерность_обЪекта_1>
<название_объекта_2>, <размерность_обЪекта_2>
<название_объекта_3>, <размерность_обЪекта_3>
...
...
и т.д.
(сколько угодно обЪектов)


В НОВЫЙ файл переписать упорадоченную, например, по убыванию "размерности_объекта" инфу, т.е., например:
если "<размерность_обЪекта_2>" больше "<размерность_обЪекта_1>" и всех остальных, а "<размерность_обЪекта_1>" больше "всех остальных", то в новый файл переписывается:
<название_объекта_2>, <размерность_обЪекта_2>
<название_объекта_1>, <размерность_обЪекта_1>
<название_объекта_3>, <размерность_обЪекта_3>
...
...
и т.д.


Заранее благюдарю за помощь! good.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Уточнение: файл у тебя неструктурированный, хорошо... Он что, текстовый? (иначе, как именно ты хранишь названия объектов и их размерности?)

Задача сводится к сортировке строк в текстовом файле... Тогда еще дополнительный вопрос: размер файла (в смысле, количество строк) хоть как-то ограничен?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Новичок
*

Группа: Пользователи
Сообщений: 29
Пол: Мужской

Репутация: -  0  +


Да, файл текстовый.
Количество строк неограничено.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






Значит, тебе сюда: Сортировка последовательных файлов слиянием

(поменяй типизированные файлы на текстовые, но алгоритм-то останется тем же...)
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Новичок
*

Группа: Пользователи
Сообщений: 29
Пол: Мужской

Репутация: -  0  +


А есть более простой способ сортировки файла?

Добавлено через 5 мин.
А может прочитать данные файла в структуру, затем упорядочить и записать в новый файл?

Добавлено через 46 сек.
Как это сделать? Не представляю.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гость






Цитата
А может прочитать данные файла в структуру
А тебя что, просто так спрашивал, какое ограничение существует на размер файла? Попробуй, прочти, при размере файла больше, скажем, 60Кбайт... Ну, или чуть больше - если использовать динамические структуры данных...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Новичок
*

Группа: Пользователи
Сообщений: 29
Пол: Мужской

Репутация: -  0  +


Но сортировка слиянием меня не устраивает. Ладна, структура тоже не годится.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Гость






Цитата
Но сортировка слиянием меня не устраивает.
Чем, можно поинтересоваться?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Новичок
*

Группа: Пользователи
Сообщений: 29
Пол: Мужской

Репутация: -  0  +


Слишком сложно. Будем считать, что я не знаю об этом способе ничего и нужно решить задачу более простым способом.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Гость






Значит задавай ограничения на размер файла, читай его содержимое в массив (или любую другую структуру данных), сортируй эту структуру, и перезаписывай в файл... Бесплатных пирожных не бывает. Не знаешь - учись, не хочешь - ограничивай исходные данные.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Новичок
*

Группа: Пользователи
Сообщений: 15
Пол: Мужской

Репутация: -  0  +


Решил эту задачу.
Одно замечание: в исходном файле с данными, данные хранятся в виде:
<название объекта1>
<размерность1>
<пустая строка>
<название объекта2>
<размерность2>
<пустая строка>
<название объекта3>
<размерность3>
...
(мне так легче считывать в структуру)
(у меня задание было про реки и их протяженность)


Program Rivers;
Uses
Crt;
Type
River = Record
Name : String;
Length : Integer;
END;

Var
Mas : Array[1..100] Of River;
Input, Output : Text;
I, J, N : Integer;
BufName : String;
BufLength : Integer;
NameOfFile : String;

BEGIN
ClrScr;
Write('Enter name of file : ');
Readln(NameOfFile);
Assign(Input,'Input.txt');
Reset(Input);
assign(Output,'Output.txt');
Rewrite(Output);
While (NOT EOF(Input)) Do
BEGIN
Inc(I);
ReadLn(Input,Mas[I].Name);
ReadLn(Input,Mas[I].Length);
ReadLn(Input);
end;
For N := 1 To I - 1 Do
For J := 1 To (I - N) Do
If Mas[J].Length < Mas[J + 1].Length Then
BEGIN
BufName := Mas[J].Name;
Mas[J].Name := Mas[J + 1].Name;
Mas[J + 1].Name := BufName;
BufLength := Mas[J].Length;
Mas[J].Length := Mas[J + 1].Length;
Mas[J + 1].Length := BufLength;
END;
For J := 1 To (I - 1) Do
BEGIN
WriteLn(Output, Mas[J].Name);
WriteLn(Output, Mas[J].Length);
WriteLn(Output);
END;
Close(Input);
Close(Output);
END.

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 29.03.2024 11:46
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name