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

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


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

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

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

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

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

Номер выпуска:1719
Дата выхода:15.01.2012, 15:00
Администратор рассылки:Киселёва Алёна aka Verena (Профессор)
Подписчиков / экспертов:229 / 133
Вопросов / ответов:1 / 1

Консультация # 185094: Здравствуйте, уважаемые эксперты! Прошу сделать задание из области объектно-ориентированного программирования на С++. Среда - Visual Studio, код прокомментировать. 1. Разработать класс "алфавит" в соответствии со следующим заданием: Состояние класса - Алфавит состоит из элементов (знаков) типа char (в алфавите не м...


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

Здравствуйте, уважаемые эксперты!
Прошу сделать задание из области объектно-ориентированного программирования на С++. Среда - Visual Studio, код прокомментировать.



1. Разработать класс "алфавит" в соответствии со следующим заданием:
Состояние класса -
Алфавит состоит из элементов (знаков) типа char (в алфавите не может быть двух элементов с одинаковыми значениями) и определяется размером (количеством знаков в алфавите) и значениями своих элементов, например: алфавит английских букв (26 элементов: abcdefghijklmnopqrstuvwxyz). Память под алфавит выделяется статически, во время компиляции, и задается массивом фиксированного предельного значения (например, максимальный размер алфавита 100 элементов).
Протокол класса -
Определяет возможности создания и инициализации экземпляров класса и правила использования их (методы класса).
Предусмотреть следующие возможности:
∙ пустой конструктор для инициализации экземпляров и массивов эк земпляров класса по умолчанию;
∙ создание экземпляров класса с инициализацией размером алфавита (начальный алфавит - заглавные буквы латинского алфавита цифры, строчные буквы латинского алфавита, спецзнаки);
∙ создание экземпляров класса с инициализацией значениями элементов алфавита как строки ASCII-символов;
∙ ввод экземпляров класса из входного потока и вывод их значений в выходной поток
(с помощью перегруженных операторов >> и <<);
∙ объединение двух алфавитов в один (с помощью перегруженного оператора сложения + );
∙ добавление нового символа в алфавит (с помощью перегруженного оператора += );
∙ кодирование некоторой строки по заданному алфавиту (алгоритм перекодировки: выбирается очередной символ строки и заменяется символом алфавита, отстоящим от символа строки на n позиций в алфавите, где n задается). Например, если перекодировать строку street в английском алфавите при заданном n = 2, получим: uvtggv. Если требуется закодировать при тех же условиях букву z (символы из конца алфавита), нужно перейти в начало алфавита: b);
∙ декодирование строки при заданном n (алгоритм, обратный кодированию);
∙ определение, имеется ли некоторый заданный символ в алфавите.
2. Проектирование класса рекомендуется начать с представления состояния класса, учитывающего заданные операции, а затем реализации конструкторов и перегруженного оператора вывода. Для отладки и исчерпывающего тестирования других методов разработанного класса реализовать диалоговую программу, которая позволяет вводить параметры, отлаживаемых методов.
3. Повторить разработку класса при условии, что память под алфавит необходимой длины выделяется динамически, во время выполнения программы (с помощью оператора new; память задается указателем на char в состоянии класса).
Дополнить интерфейс класса следующими возможностями:
∙ создание экземпляра класса с его инициализацией другим экземпляром класса (копирующий конструктор);
∙ переопреде ление экземпляра класса (с помощью перегруженного оператора присваивания).
4. Написать прикладную программу, использующую разработанный класс.
Примечание: пункты задания, отмеченные (*), являются дополнительными.

Дата отправки: 07.01.2012, 14:43
Вопрос задал: Вася Зелепупкин (Посетитель)
Всего ответов: 1
Страница онлайн-консультации »


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

Здравствуйте, Вася Зелепупкин!
Сделала на основании моих ответов 269361, 268954. В комментариях осталось слово "множество" - в Вашем случае это и есть алфавит. Добавила, соответственно, функции кодировки и декодирования, необходимые в Вашем задании. Обратите внимание, данные функции не выделяют память в строке результата.
Вот пример использования класса:

Код :
int _tmain(int argc, _TCHAR* argv[])
{
	Set s1 (32), s2 ("abcd");
	cout << s1 << endl;
	cout << s2;
	char a [] = "ABSD", b[5];
	s1.Encode (a, b, 10);
	s1.Decode (b, a, 10);
	cout << a; //здесь строка а должна остаться такой, как была
	getch();
	return 0;
}


В приложении обе версии - со статической и с динамической памятью.

Проверено в Visual Studio 2005. Из комментариев всё должно быть ясно, но если будут вопросы, задавайте.

Удачи!

Приложение:

Консультировал: Киселёва Алёна aka Verena (Профессор)
Дата отправки: 12.01.2012, 01:36
Рейтинг ответа:

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


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

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

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



В избранное