|
1 / 1 / 0
Регистрация: 19.03.2022
Сообщений: 99
|
|
Управление двоичными файлами с записями фиксированной длины.Разбиаение записи на команды19.10.2022, 23:28. Показов 1960. Ответов 23
Имеется задача. Честно говоря, не знаю как подступиться ни с точки зрения кода ни алгоритмически. Очень плохо даётся всё связанное с двоичными файлами, да и в принципе по работе с файлами (Крайне буду благодарен литературе по работе с файлами и не только на с++)
Нужно программу управления двоичными файлами с записями фиксированной длины Общие требования: файл состоит из записей определенной структуры, согласно варианту. Записи имеют ключ, уникальный в пределах файла. Сама задача: Книга: ISBN – двенадцатизначное число, автор, название, год издания. Требования к подготовке и выполнению задания 1) Разработать структуру записи двоичного файла согласно варианту задания. 2) Подготовить тестовые данные в текстовом файле с кодировкой ASCII, в соответствии со структурой записи варианта. 3) При открытии файла выполнить контроль его существования и открытия. Примечание. Реализация операций по чтению данных из файла будет проще, если значение для каждого поля записи размещать на отдельной строке текстового редактора. Имя файла вводит пользователь. При открытии файла обеспечить контроль существования и открытия файла. При применении механизма прямого доступа к записи файла выполнить контроль присутствия записи с заданным номером в файле. Проблема в том, что неясно как вообще алгоритмически это сделать. Вроде как тут нужно двойное хэширование, но тогда вопрос встает в реализации. Прошу совета в алгоритме или коде или любая другая инфа по данной теме. Кто чем может
0
|
|
| 19.10.2022, 23:28 | |
|
Ответы с готовыми решениями:
23
Создать текстовый файл с записями фиксированной длины. Работа с двоичными файлами: слова заданной длины Строку произвольной длины разрезать на несколько строк фиксированной длины |
|
631 / 526 / 104
Регистрация: 05.08.2022
Сообщений: 2,810
|
||
| 19.10.2022, 23:41 | ||
|
Хеширование тройное минимум, иначе незачет.
Где в задании про двоичные файлы вообще? Кстати, а что препод говорит и
0
|
||
|
1 / 1 / 0
Регистрация: 19.03.2022
Сообщений: 99
|
|
| 20.10.2022, 00:06 [ТС] | |
|
Да пробовали. Препод вообще ничего не говорит. С этим туго. А однокурсники также над этим две недели бьются. Сейчас попробую найти тот код, который написали все вместе на данный момент. А методички и вовсе нет. Было сказано смотреть ютуб и набираться знаний от бесконечного простора вселенной. Поэтому я и здесь)))
Главное, самому интересно, а как подступиться непонятно (
0
|
|
|
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
|
||||
| 20.10.2022, 00:10 | ||||
|
Добавлено через 1 минуту
0
|
||||
|
1 / 1 / 0
Регистрация: 19.03.2022
Сообщений: 99
|
|
| 20.10.2022, 00:16 [ТС] | |
|
Мысль была выработана путем долгих и видимо фиговых размышлений
0
|
|
|
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
|
|||||||||
| 20.10.2022, 00:22 | |||||||||
|
daniil_novel,
Добавлено через 1 минуту Я без понятия что там за ключи для записей, и на какой они там нужны. Найдете ответ, укажу как их добавить. Добавлено через 3 минуты
1
|
|||||||||
|
1 / 1 / 0
Регистрация: 19.03.2022
Сообщений: 99
|
|
| 20.10.2022, 00:25 [ТС] | |
|
По структуре всё поянл. Там в задании вот какой прикол. Есть файл, там написан ISBN, автор и так далее. Вот надо с каким-то образом по номеру исбн или по автору и году получать название книги. Касаемо структуры понятно. Непонятно как из файла всё это в нужные массивы класть. Написано по коучам, но опять же по каким. Скорее всего по исбн, ибо он уникален для каждой книги
А на самом деле сама формулировка задания удручающая(
0
|
|
|
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
|
||
| 20.10.2022, 00:36 | ||
|
0
|
||
|
1 / 1 / 0
Регистрация: 19.03.2022
Сообщений: 99
|
|
| 20.10.2022, 00:50 [ТС] | |
|
Нашел вот в заданиях за прошлый год более расширенную формулировку того, что должна делать программа.
Разработать функции для выполнения операций: 1)преобразование тестовых данных из текстового файла в двоичный файл; 2)сохранение данных двоичного файла в текстовом, так, чтобы используя их можно было восстановить двоичный файл; 3)вывод всех записей двоичного файла; 4)доступ к записи по ее порядковому номеру в файле, используя механизм прямого доступа к записи в двоичном файле; 5)удаление записи с заданным значением ключа, выполнить путем замены на последнюю запись. 6)манипулирование записями в двоичном файле согласно дополнительным операциям, определенным в варианте; 7)Сохраните функции в новом модуле. 8)Разработать приложение, демонстрирующее выполнение всех операций, подключив к нему модуль с функциями. Выполнить тестирование приложения, продемонстрировав выполнение всех операций. Получается нужно создать файл согласно условию исбн-автор-год... и потом сделать функция добавления и удаления из файла по номеру. Видимо еще дописывание и изменение существующих
0
|
|
|
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
|
||
| 20.10.2022, 00:53 | ||
|
Добавлено через 1 минуту daniil_novel, уже лучше, и не нужно никакого ключа в записях, и никакого хеша.
0
|
||
|
1 / 1 / 0
Регистрация: 19.03.2022
Сообщений: 99
|
|
| 20.10.2022, 00:58 [ТС] | |
|
Само задание называется как "Открытый адрес (двойное хэширование)", хотя преподы любят понаписать всякое, а потом сказать, что надо было головой подумать и сделать вообще всё иначе)). А я как на зло ещё и разобраться хочу
0
|
|
|
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
|
|
| 20.10.2022, 01:00 | |
|
0
|
|
|
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
|
||
| 20.10.2022, 01:02 | ||
|
0
|
||
|
1 / 1 / 0
Регистрация: 19.03.2022
Сообщений: 99
|
|
| 20.10.2022, 01:07 [ТС] | |
|
Ахах. На самом деле практика показывает, что двойное хэширование вообще никто так и не применил. Видимо надо просто как-то по исбн в файле считывать название книги. В основном это и вызывает трудности. Ну и редактирование файла тоже
Добавлено через 3 минуты Таблицу хранить скорее всего лучше, ибо не надо лишний раз файл читать. О-оптимизация. Но вот как сделать такую таблицу, я не очень знаю. Проще просто еще разок файл прочитать
0
|
|
|
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
|
|||||
| 20.10.2022, 01:20 | |||||
|
Можно добавить в него свой итератор. (опционально) Дальше можно расширить функционал для поиска по любому полю записи. Это же обычная арифметика. Задание само по себе стремное. Никогда не мог понять смысл подобных заданий. До БД пилить никто не будет, а на тяп ляп ничего толкового не получишь. То есть , смысл, что бы эффективно работать с большой базой (файлом), не пляшет ни разу. Да и про индексирование в задании тоже не пахнет. Добавлено через 2 минуты
0
|
|||||
|
1 / 1 / 0
Регистрация: 19.03.2022
Сообщений: 99
|
|
| 20.10.2022, 01:23 [ТС] | |
|
Сложно звучит. Не очень понимаю как по порядковому номеру искать. Там же типо для этой задачи ISBN служит. Или это вариант, чтобы вообще ключ ISBN не использовать?
0
|
|
|
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
|
||
| 20.10.2022, 01:34 | ||
|
Но для этого нужно сначала перейти на начало записи. Например наша запись занимает 20 байт. Нащ файл 100 байт. 100/20 = 5 записей. Опа, мы уже знаем сколько записей в файле. Дальше, хотим прочитать 3 запись. Устанавливаем позицию чтения на 20*(3-1), читаем нашу запись.
0
|
||
|
1 / 1 / 0
Регистрация: 19.03.2022
Сообщений: 99
|
|
| 20.10.2022, 01:39 [ТС] | |
|
Блин. Стыдно конечно, что столько всего не знаю, но как мы в коде узнаем вес файла? А как установим позицию для чтения?
0
|
|
|
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
|
|
| 20.10.2022, 01:50 | |
|
daniil_novel, это особенности реализации. Не алгоритм.
Для всех бинарных файлов, доступные такие инструменты. Все зависит от того какие вы будете использовать. Можно и со стандартными потоками работать. Можно использовать Си(унаследованные) функции для работы с файлами. Или вообще использовать API OS.
0
|
|
|
1 / 1 / 0
Регистрация: 19.03.2022
Сообщений: 99
|
|
| 20.10.2022, 02:02 [ТС] | |
|
Да вроде бы надо через потоки, но пока с реализацией туго
0
|
|
| 20.10.2022, 02:02 | |
|
Помогаю со студенческими работами здесь
20
Работа с двоичными файлами Работа с двоичными файлами Работа с двоичными файлами Работа с двоичными файлами Работа с двоичными файлами Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes.
А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения
развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
|
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ *
Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам
Кирхгофа, решает её и находит токи на L и напряжения на C в установ. режимах до и. . .
|
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым.
Но восстановить их можно так.
Для этого понадобится консольная утилита. . .
|
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
|
|
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
|
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11
— это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
|
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11
Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
|
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
|