Форум программистов, компьютерный форум CyberForum.ru

Работа с файлами прямого доступа. Хешированные фай-лы - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ 3 непростые программы http://www.cyberforum.ru/cpp-beginners/thread200429.html
Доброй ночи форумчане. Недавно занялся си. Нужно решить 3 задачи.. Прошу помочь или объяснить методы решения.. 1. Даны два неупорядоченных набора натуральных чисел (может быть, с повторениями). Выдать без повторений в порядке возрастания все те числа, которые встречаются в обоих наборах. Входные данные В первой строке входного файла INPUT.TXT записано через пробел два целых числа N и М (1 ≤...
C++ Создание хитрого Масива Ну в общем надо вычислить сумму и кол-во элементов масива по модулю не превышающих 8 и парных, если размер масива 3х4. ( пжалста решите срочно надо)) ( я так и не понял к чему тут парных , в тупик меня завело окончательно))) http://www.cyberforum.ru/cpp-beginners/thread200428.html
EXCEPTION_NONCONTINUABLE_EXCEPTION C++
как можно используя __try _except и __try __finally сгенерировать исключение EXCEPTION_NONCONTINUABLE_EXCEPTION #include <iostream.h> #include <windows.h> #include <except.h> #include <windows.h> #include <iostream.h> #include <stdio.h> #include <clocale>
C++ Ох уж эти строки
Дано N предложений, слова в которых разделены пробелом. Составить новый текст по следующему правилу: исключить из текста все слова на букву 'a'. Прошу помощи у понимающих людей,ибо со строками затык :(
C++ Сумма ряда http://www.cyberforum.ru/cpp-beginners/thread200413.html
вот пример, надо написать програмку, которая вычисляет суму ряда с точностью Е=10^-5 Проблема в том, что я не знаю, как вообще находить суму ряда Вот здесь пытался что-то сделать #include<stdio.h> #include<conio.h> #include<math.h>
C++ Создание объекта типа стек Чайнику нужна помощь! Создать объект типа стек. Перегрузить оператор ++, --, !, !=, ==, >, <, >=, <=, +,. Ввод, вывод в поток. подробнее

Показать сообщение отдельно
Marti
Сообщений: n/a
30.11.2010, 00:52     Работа с файлами прямого доступа. Хешированные фай-лы
Вот недавно перешли на С и препод такуб задачку подкинул , который день голову ломаю...
Необходимо разработать и отладить программу на Си, реализующую методы для работы с файлами прямого доступа.
Для распределения записей в файле используется хеширование на ос-нове функции середины квадрата. Размер таблицы изменяется: 16,32,64 и так далее записей.
Для преодоления коллизий записи в сегменте организуются в виде связанного списка: то есть запись в основной области является заголовком списка записей в области переполнения, куда попадают все записи, всту-пающие в коллизию.
Если число записей начинает превышать число сегментов в 2 раза, то создается новый файл вдвое большего размера, и в него переписываются записи из старого файла с использованием новой функции размещения (количество разрядов в "середине квадрата" увеличивается на 1).

C++
1
2
3
4
5
6
7
8
9
10
11
// Функция рассеивания для файла из 1024 записей и 16 разрядного ключа
int h(unsigned key) {
   unsigned long n, n1;
   int m;
   n = (unsigned long)key * key;
   // Подсчет количества значащих битов в n 
   for (m=0, n1 = n; n1 !=0; m++, n1 >>= 1);
   if (m < 10) return(n); 
   m = (m - 10) / 2; // m - количество битов по краям
   return((n >> m) & 0x3FF);
}
Листинг 1. Пример хеш-функции для целочисленных ключей

Программа должна содержать следующие функции:
• открытие файла file_t openfile(char *name);
• создание файла file_t createfile(char *name);
• закрытие файла int closefile(file_t f);
• поиск записи по ключу int searchrec(file_t f, key_t key);
• добавление новой записи int appendrec(file_t f, data_t data);
• изменение существующей записи updaterec(file_t f, key_t key, data_t newdata);
• удаление записи по ключу deleterec(file_t f, key_t key);
• и другие функции по вашему усмотрению.

Функции должны иметь возможность работы с несколькими файлами одновременно. В случае ошибочных ситуаций устанавливать и проверять глобальную переменную errcode.

Для проверки работоспособности разработанной функции создать тестирующую функцию, в которой необходимо предусмотреть ввод исходных данных с клавиатуры, вывод на печать результатов. Проверить все режимы работы функций и возможность работы с несколькими фай-лами.
Оценить быстродействие операций вставки, удаления записей с ис-пользованием СИНХРОНИЗИРОВАННОГО и обычного режимов работы с файлами.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 04:24. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru