|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
21.04.2008, 01:14 | #1 |
Пользователь
Регистрация: 21.04.2008
Сообщений: 21
|
Сортировка в текстовом файле
Ситуация такая. Пишу прогу без динамики. Использую списки, которые загоняються в файл методом:
while not eof(f) do writeln('Имя :'); readln(st.Imya); writeln('Номер: '); readln(st.Nomer); write(f,st); Короче говоря основа базы данных. Вопрос следующий, как сделать сортировку по имени??? Спасибо заранее всем за идеи и помощь. |
21.04.2008, 08:27 | #2 |
Участник клуба
Регистрация: 12.10.2007
Сообщений: 1,204
|
Нужно делать ввод данных в память. Например, хранение списка в массиве. В процессе ввода можно сразу сортировать - вставлять новый элемент в нужное место списка. Только после этого сохранять в файл.
Надеюсь, приведенный код только схема, потому как условие окончания цикла не соответствует условию задачи и нет begin/end; |
21.04.2008, 11:12 | #3 |
Форумчанин
Регистрация: 04.04.2007
Сообщений: 131
|
Была у меня практика, там нужно было такое делать. Если хочеш могу выложить, но меню там на латышском потомучто живу в латвии и учусь в латышской школе
Последний раз редактировалось nikleb; 21.04.2008 в 11:26. |
21.04.2008, 12:49 | #4 |
Старожил
Регистрация: 13.10.2007
Сообщений: 2,740
|
Сортиртировка по имени делается также как любая сортировка, методом сравнения величин элементов. Видимо имена у вас строкового типа, а строки тоже сравниваются и сортируются. Например по алфавиту. У вас видимо есть массив записей, тогда это делается например так:
Код:
Если по имени нужно отсортировать весь массив записей, то пишем: Код:
Потом выводим на экран или в файл уже отсортированную запись. |
22.04.2008, 10:18 | #5 |
Пользователь
Регистрация: 21.04.2008
Сообщений: 21
|
Хмм... у меня была идея так попробовать, но будет это работать, если при вводе данных в файл я не использовал циклы i и j. Или прога всё равно будет брать по одному элементу и сравнивать?
Вечером попробую, просто сейчас в универ ухожу. |
22.04.2008, 22:48 | #6 |
Пользователь
Регистрация: 21.04.2008
Сообщений: 21
|
В общем ничего не получилось.
Вот мой тип, который рекорд: Код:
Код:
Компилятор выдаёт ошибку на месте где встречаеться st[j].Termin : Error 121: Invalid qualifier. Последний раз редактировалось Isthmus; 22.04.2008 в 22:49. Причина: не правильно написал |
22.04.2008, 23:14 | #7 |
Старожил
Регистрация: 13.10.2007
Сообщений: 2,740
|
Ну Вы даете. Прежде чем сортировать МАССИВ записей, его не плохо было бы сначала объявить, например
st:array[1..50] of ykazatel; потом наполнить содержимым, типа n:=1; while not eof(f) do Begin readln(f,st[n]); n:=n+1; end; А вот потом, благословлясь, можно этот массив и посортировать слегка. |
22.04.2008, 23:42 | #8 |
Пользователь
Регистрация: 19.04.2008
Сообщений: 66
|
Ну и чехорда... Если Isthmus хочешь, то могу написать функцию
с тем что надо (только с применением указателей) и с входными параметрами. А дальше сам разгребёшь. Не всё же халява . Ну как?
Нет таких проблем, которых мы не можем себе создать
|
23.04.2008, 00:15 | #9 |
Пользователь
Регистрация: 21.04.2008
Сообщений: 21
|
2 MusicMan: нет, спасиб. Я лучше без указателей помучаюсь
|
23.04.2008, 01:26 | #10 |
Пользователь
Регистрация: 21.04.2008
Сообщений: 21
|
Всё равно не пашет. Может есть у кого ещё предложения???
Код:
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Поиск символов в текстовом файле. | Uomo | Общие вопросы Delphi | 8 | 24.10.2007 15:57 |
Поиск чисел в текстовом файле | Homka | Паскаль, Turbo Pascal, PascalABC.NET | 4 | 25.06.2007 19:15 |
Поиск данных в текстовом файле | BizON | Помощь студентам | 1 | 06.06.2007 18:17 |