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

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

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

> Сортировка файла
Совсем новичок
сообщение 1.11.2007 22:03
Сообщение #1


Новичок
*

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

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


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

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


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


Заранее благюдарю за помощь! good.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 10)
volvo
сообщение 1.11.2007 22:10
Сообщение #2


Гость






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

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


Новичок
*

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

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


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


Гость






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

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


Новичок
*

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

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


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

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

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


Гость






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


Новичок
*

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

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


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


Гость






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


Новичок
*

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

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


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


Гость






Значит задавай ограничения на размер файла, читай его содержимое в массив (или любую другую структуру данных), сортируй эту структуру, и перезаписывай в файл... Бесплатных пирожных не бывает. Не знаешь - учись, не хочешь - ограничивай исходные данные.
 К началу страницы 
+ Ответить 
not_programmer
сообщение 16.12.2007 20:01
Сообщение #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

 



- Текстовая версия 21.06.2025 17:26
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"