|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
28.05.2008, 00:44 | #1 |
Регистрация: 28.05.2008
Сообщений: 3
|
Разбить файл на 4 части
Здравствуйте!
Такая вот проблема: дан файл типа куча (нетипизированный) для базы данных студентов при вводе записи смотрим ключ(номер студента) и в соответствии с ним по формуле -n mod 4- записываем в 4 разных места файла, смысл? -Чтобы проще искать по ключу. Ну так вот вопрос в том, как записывать в 4 разных места? вообще не имею представления... Заранее благодарен. Последний раз редактировалось borzoni; 28.05.2008 в 00:55. |
28.05.2008, 15:31 | #2 |
Форумчанин
Регистрация: 24.01.2007
Сообщений: 323
|
я не уверен но возможно функцыя seek(файл, позицыя) - перемещает курсор в определённую позицию в файле, а потом можно дописывать в ту позицыю шотО)
Всё проще чем вы думаете, нужно только правильно подойти к тому или иному вопросу?
|
28.05.2008, 15:37 | #3 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
I'm learning to live...
|
|
28.05.2008, 21:21 | #4 |
Регистрация: 28.05.2008
Сообщений: 3
|
Неважно какой файл, даже если типизированный...Немного коряво объяснил...
Тупо я ввожу запись нового студента и ставлю код, далее делю код на 4 и в соответствии от остатка нахожу куда его записать. Т.е если один - отправляю его в одно место файла,если два- в другое,если 5(т.е остаток 1)-ставлю ссылку с раннее введенной 1 записи(с кодом 1) на эту новую запись(код 5), соответственно так со всеми записями. Тупо получаются 4 колонки (но только в воображении - на самом деле как были записи в файле одна за другой, так и будут, но ссылки разбивают их на 4 цепочки). А фишка в том, что когда я ввожу к примеру 17 (код студента) я получаю 1(как остаток) и ищу не во всем файле, а только в цепочке, ответственной за остаток один... Весь вопрос как мне запомнить адреса самых первых записей, чтобы я мог пустить поиск с этой записи до nil. Т.е как запоминать адресс записи родителя цепочки, так чтобы открывая приложение заново, все сохранялось. Вот так вот... Думаю теперь более понятно, по моему это еще называется хэш-функцией, но могу ошибаться... |
28.05.2008, 22:13 | #5 | |
Участник клуба
Регистрация: 12.10.2007
Сообщений: 1,204
|
Цитата:
Только зачем так усложнять. Не достаточно будет одной "колонки" ? Есть уникальный номер записи от 0 до count. Умножаем номер на длину записи - получаем позицию в файле. С этой позиции читаем запись. По длине файла можно определить количество записей. |
|
28.05.2008, 23:53 | #6 |
Регистрация: 28.05.2008
Сообщений: 3
|
тогда как быть если я ввожу студента с 17 кодом вторым?
Ведь 17 позиции еще нет в файле, или с помощью Seek это можно сделать?Сразу прыгнуть на место 17? Нужен всё таки типизированный файл... И из типизированного файла как можно считать эти четыре integer? Я думаю это невозможно, тупо получаеться нужно их хранить в другом месте? |
29.05.2008, 01:37 | #7 |
Новичок
Джуниор
Регистрация: 18.01.2008
Сообщений: 1,720
|
|
31.05.2008, 10:51 | #8 |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,528
|
выделить первые четыре записи под пустые записи НАЧАЛО цепочки.
а не проще ли будет загрузить ВЕСЬ файл в отсортированный массив record и искать записи в нем.
программа — запись алгоритма на языке понятном транслятору
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
разбить строку | Ceprey | Общие вопросы C/C++ | 10 | 24.12.2009 20:47 |
Как разбить число по числам? | maxim_ov | Microsoft Office Excel | 3 | 04.08.2008 16:23 |
Разбить список на части | fotobra | Microsoft Office Excel | 1 | 23.02.2008 03:13 |
как разбить таблицу при копировании | StasSv | Microsoft Office Excel | 3 | 11.02.2008 10:23 |
разбить ячейку и ивписать тхт | Axe_L | Помощь студентам | 2 | 22.10.2007 14:50 |