Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RFpro.ru: Программирование на C / C++


Хостинг портала RFpro.ru:
Московский хостер
Профессиональный ХОСТИНГ на базе Linux x64 и Windows x64

РАССЫЛКИ ПОРТАЛА RFPRO.RU

Лучшие эксперты по данной тематике

Асмик Гаряка
Статус: Академик
Рейтинг: 8648
∙ повысить рейтинг »
Коцюрбенко Алексей aka Жерар
Статус: Профессор
Рейтинг: 2842
∙ повысить рейтинг »
Boriss
Статус: Академик
Рейтинг: 2594
∙ повысить рейтинг »

/ КОМПЬЮТЕРЫ И СОФТ / Программирование / C/C++

Номер выпуска:1691
Дата выхода:24.10.2011, 14:30
Администратор рассылки:Киселёва Алёна aka Verena (Профессор)
Подписчиков / экспертов:286 / 165
Вопросов / ответов:1 / 2

Консультация # 184233: Здравствуйте! Требуется написать программу из области объектно-ориентированного программирования на С++. Код прокомментировать. Был бы очень благодарен за помощь. Задание: 1. Разработать класс "перемешанная таблица" в соответствии со следующим заданием: Состояние класса - Таблица представляется в виде вектора (массива), сос...


Консультация # 184233:

Здравствуйте!
Требуется написать программу из области объектно-ориентированного программирования на С++. Код прокомментировать. Был бы очень благодарен за помощь.
Задание:
1. Разработать класс "перемешанная таблица" в соответствии со следующим заданием:
Состояние класса -
Таблица представляется в виде вектора (массива), состоящего из элементов. Элемент таблицы состоит из ключа (тип int), поля занятости (тип int) и информации (тип char[ ] фиксированной длины). Для описания элемента таблицы целесообразно использовать структуру. Память под массив выделяется статически, во время компиляции, и задается массивом фиксированного размера. Преобразование ключа в индекс выполняется функцией хеширования. Элементы перемешиваются методом сложения с константой.
Протокол класса -
Определяет возможности создания и инициализации экземпляров класса и правила их использования (методы класса).
Предусмотреть следующие возможности:
∙ создание экземпляров структуры (элемента таблицы) с инициализацией начальным состоянием по умолчанию;
∙ пустой конструктор для инициализации экземпляров и массивов экземпляров класса (таблицы) по умолчанию;
∙ создание экземпляров класса (таблицы) с инициализацией заданным количеством элементов из массива ключей и информации;
∙ ввод значения экземпляра структуры (элемента таблицы) из входного потока (с помощью перегруженного оператора >> );
∙ вывод таблицы в выходной поток (с помощью перегруженного оператора << );
∙ поиск элемента таблицы по ключу (с помощью перегруженного оператора ( ) );
∙ добавление элемента в таблицу (с помощью перегруженного оператора += );
∙ выборка информации из таблицы по заданному ключу (с помощью перегруженного оператора [ ] );
∙ удаление элемента из таблицы (с отметкой в поле занятости) по ключу (с помощью перегруженного оператора -= );
∙ чистка таблицы от “удаленных элементов” – реорганизация таблицы.
2. Проектирование класса рекомендуется начать с представления состояния класса, учитывающего заданные операции, а затем реализации конструкторов и перегруженного оператора вывода. Для отладки и исчерпывающего тестирования других методов разработанного класса реализовать диалоговую программу, которая позволяет вводить параметры, отлаживаемых методов.
3. Повторить разработку класса при условии, что память под строку символов в элементе таблицы и массив структур необходимой длины выделяется динамически, во время выполнения программы (с помощью оператора new; память задается указателем на char в структуре и указателем на структуру в состоянии класса).
Дополнить интерфейс класса следующими возможностями:
∙ память под данные поля информации выделять динамически с помощью оператора new;
∙ создание экземпляра класса (таблицы) с его инициализацией другим экземпляром класса (копирующий конструктор) для элемента таблицы и таблицы;
∙ переопределение экземпляра класса (с помощью перегруженного оп ератора присваивания) для элемента таблицы и таблицы.
4. Написать прикладную программу, использующую разработанный класс.

Дата отправки: 17.10.2011, 13:49
Вопрос задал: Посетитель - 383089 (Посетитель)
Всего ответов: 2
Страница онлайн-консультации »


Консультирует Киселёва Алёна aka Verena (Профессор):

Здравствуйте, Посетитель - 383089!
Вот один из вариантов реализации. Если что-то не так поняла, пишите, исправлю.
Единственное, программа не учитывает вариант, при котором в таблицу передадут разные элементы с одним ключом. Тогда в поиске будет выдаваться только первый из них. Относительно данной ситуации в ТЗ ничего не сказано.
Код класса в приложении и в архиве. Вот пример его использования:

Код :
#include <conio.h>
#include <stdlib.h>
#include "HashedTable.h"


int _tmain(int argc, _TCHAR* argv[])
{ //пример
 try {
  Elem e [2];
  e[0].key = 102; strcpy (e[0].info, "ura");
  e[1].key = 113; strcpy (e[1].info, "rok");
  CHashedTable a, b (e, 2);
  cout << "a=" << a << endl;
  cout << "b=" << b << endl;
  a+=e[0];
  cout << "a+=e[0]" << a << endl;
  b+=e[1];
  cout << "b+=e[1]" << b << endl;
  b-=e[1];
  cout << "b-=e[1]" << b << endl;
  b.Clear();
  cout << "b.Clear=" << b << endl;
  cout << "b[102] = " << b[102].info << endl;
  cout << "b(102) = " << b(102) << endl;
  cout << "Enter: " << endl;
  cin >> a;
  cout << "a=" << a << endl;
 } catch (char* ex) {
  cout << ex;
 }
 getch(); //ожидаем пользователя
 return 0;
}

Проверено в Visual Studio 2005.
Удачи!

Приложение:

Консультировал: Киселёва Алёна aka Verena (Профессор)
Дата отправки: 23.10.2011, 20:31
Прикреплённый файл: посмотреть » [2.3 кб]
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Консультирует Jiraff (10-й класс):

Здравствуйте, Посетитель - 383089!
Реализация Вашего ТЗ может быть выполнена еще и так. VS2010.
А вообще для хэшированных таблиц неплохо было бы использовать STL в полной его функциональной возможности, включая алгоритмы, чтобы не изобретать велосипед)))

Приложение:

Консультировал: Jiraff (10-й класс)
Дата отправки: 24.10.2011, 03:37
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Оценить выпуск | Задать вопрос экспертам

главная страница  |  стать участником  |  получить консультацию
техническая поддержка  |  восстановить логин/пароль

Дорогой читатель!
Команда портала RFPRO.RU благодарит Вас за то, что Вы пользуетесь нашими услугами. Вы только что прочли очередной выпуск рассылки. Мы старались. Пожалуйста, оцените его. Если совет помог Вам, если Вам понравился ответ, Вы можете поблагодарить автора - для этого в каждом ответе есть специальные ссылки. Вы можете оставить отзыв о работе портале. Нам очень важно знать Ваше мнение. Вы можете поближе познакомиться с жизнью портала, посетив наш форум, почитав журнал, который издают наши эксперты. Если у Вас есть желание помочь людям, поделиться своими знаниями, Вы можете зарегистрироваться экспертом. Заходите - у нас интересно!
МЫ РАБОТАЕМ ДЛЯ ВАС!



В избранное