![]() |
|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 28.05.2008
Сообщений: 3
|
![]()
Здравствуйте!
Такая вот проблема: дан файл типа куча (нетипизированный) для базы данных студентов при вводе записи смотрим ключ(номер студента) и в соответствии с ним по формуле -n mod 4- записываем в 4 разных места файла, смысл? -Чтобы проще искать по ключу. Ну так вот вопрос в том, как записывать в 4 разных места? вообще не имею представления... Заранее благодарен. Последний раз редактировалось borzoni; 28.05.2008 в 00:55. |
![]() |
![]() |
![]() |
#2 |
Форумчанин
Регистрация: 24.01.2007
Сообщений: 323
|
![]()
я не уверен но возможно функцыя seek(файл, позицыя) - перемещает курсор в определённую позицию в файле, а потом можно дописывать в ту позицыю шотО)
Всё проще чем вы думаете, нужно только правильно подойти к тому или иному вопросу?
![]() |
![]() |
![]() |
![]() |
#3 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]() Цитата:
I'm learning to live...
|
|
![]() |
![]() |
![]() |
#4 |
Регистрация: 28.05.2008
Сообщений: 3
|
![]()
Неважно какой файл, даже если типизированный...Немного коряво объяснил...
Тупо я ввожу запись нового студента и ставлю код, далее делю код на 4 и в соответствии от остатка нахожу куда его записать. Т.е если один - отправляю его в одно место файла,если два- в другое,если 5(т.е остаток 1)-ставлю ссылку с раннее введенной 1 записи(с кодом 1) на эту новую запись(код 5), соответственно так со всеми записями. Тупо получаются 4 колонки (но только в воображении - на самом деле как были записи в файле одна за другой, так и будут, но ссылки разбивают их на 4 цепочки). А фишка в том, что когда я ввожу к примеру 17 (код студента) я получаю 1(как остаток) и ищу не во всем файле, а только в цепочке, ответственной за остаток один... Весь вопрос как мне запомнить адреса самых первых записей, чтобы я мог пустить поиск с этой записи до nil. Т.е как запоминать адресс записи родителя цепочки, так чтобы открывая приложение заново, все сохранялось. Вот так вот... ![]() |
![]() |
![]() |
![]() |
#5 | |
Участник клуба
Регистрация: 12.10.2007
Сообщений: 1,204
|
![]() Цитата:
Только зачем так усложнять. Не достаточно будет одной "колонки" ? Есть уникальный номер записи от 0 до count. Умножаем номер на длину записи - получаем позицию в файле. С этой позиции читаем запись. По длине файла можно определить количество записей. |
|
![]() |
![]() |
![]() |
#6 |
Регистрация: 28.05.2008
Сообщений: 3
|
![]()
тогда как быть если я ввожу студента с 17 кодом вторым?
Ведь 17 позиции еще нет в файле, или с помощью Seek это можно сделать?Сразу прыгнуть на место 17? Нужен всё таки типизированный файл... И из типизированного файла как можно считать эти четыре integer? Я думаю это невозможно, тупо получаеться нужно их хранить в другом месте? |
![]() |
![]() |
![]() |
#7 |
Новичок
Джуниор
Регистрация: 18.01.2008
Сообщений: 1,720
|
![]() |
![]() |
![]() |
![]() |
#8 |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,527
|
![]()
выделить первые четыре записи под пустые записи НАЧАЛО цепочки.
а не проще ли будет загрузить ВЕСЬ файл в отсортированный массив 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 |