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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
[Федя]
9 / 9 / 1
Регистрация: 01.02.2010
Сообщений: 35
#1

Задача по наследованию. Не понимаю некоторые моменты в формулировке задания - C++

08.11.2011, 08:13. Просмотров 1144. Ответов 6
Метки нет (Все метки)

Здравствуйте! Вот есть задание:

Описать базовый класс СТРОКА
Обязательные поля класса:
# Указатель на char - хранит адрес динамически выделенной памяти для размещения символов строки;
# Значение типа int - хранит длину строки в байтах;
Обязательные методы:
# Конструктор без параметров;
# Конструктор, принимающий в качестве параметра С-строку (заканчивается нулевым байтом);
# Конструктор, принимающий в качестве параметра символ;
# Конструктор копирования;
# Получение длины строки;
# Очистка строки (сделать строку пустой);
# Деструктор.
Описать производный от СТРОКА класс БИТОВАЯ_СТРОКА
Строки данного класса могут содержать только символы '0' и '1'. Если в составе инициализирующей строки будут встречены любые символы,
отличные от допустимых, БИТОВАЯ_СТРОКА принимает нулевое значение. Содержимое данных строк рассматривается как двоичное число.
Отрицательные числа хранятся в дополнительном коде.
Обязательные методы:
# Конструктор без параметров;
# Конструктор, принимающий в качестве параметра С-строку (заканчивается нулевым байтом);
# Конструктор копирования;
# Деструктор;
# Изменение знака на противоположный (перевод числа в дополнительный код).
Переопределить следующие операции (длина строки результата равна длине большей из строк; в случае необходимости
более короткая битовая строка расширяется влево знаковым разрядом):
# Присваивание (=);
# Сложение (+) - арифметическая сумма строк;
# Операция (==) - проверка на равенство.
Разроботчик вправе вводить любое (с обоснованием необходимости) число дополнительных полей и методов.
Написать тестовую программу, которая
# Динамически выделяет массив указателей на базовый класс (4-6);
# В режиме диалога заполняет этот массив указателями на производные классы,
при этом экземпляры производных классов создаются динамически с заданием начальных значений;
# Для созданных экземпляров производных классов выполняет проверку всех разработанных методов с выводом исходных данных и результатов на дисплей.
Для конструкторов копирования каждого класса предусмотреть диагностическую печать количества его вызовов в определенное место дисплея
(рекомендуется использовать статические члены класса).
Режим диалога обеспечивается с помощью иерархического меню.
(Это задание взято из книги "Павловская. С/С++: программирование на языке высокого уровня")


Объясните пожалуйста следующее:
Значение типа int - хранит длину строки в байтах
Как это написать (как присваивать в это "значение типа int" именно байты)? Так что ли?
C++
1
2
3
unsigned int length, size;
scanf ("%d",size);
length = sizeof(char)*size;
----
Очистка строки (сделать строку пустой);
Что под этим понимается? Присваивание первому элементу массива, хранящего строку, нулевого символа? Или освобождение памяти от этой строки (delete *%указатель%)?
----
Написать тестовую программу, которая
# Динамически выделяет массив указателей на базовый класс (4-6);
# В режиме диалога заполняет этот массив указателями на производные классы,
при этом экземпляры производных классов создаются динамически с заданием начальных значений;
# Для созданных экземпляров производных классов выполняет проверку всех разработанных методов с выводом исходных данных и результатов на дисплей.
А в это я вообще не въехал, что это за указатель на массив указателей, указывающих на классы? Как это хоть примерно должно выглядеть?
----
И каким образом писать методы для классов если сама строка создается динамически? Работать с этим:
# Указатель на char - хранит адрес динамически выделенной памяти для размещения символов строки;
используя адресную арифметику?
----
На каком этапе динамически выделять память для строки? При запуске любого из конструкторов (т.е. в каждом конструкторе нужно прописать выделение памяти под строку)? А как это будет выглядеть? Так?
C++
1
2
char *STRpointer;
STRpointer = new char [length];
----
И правильно ли я понимаю, что для каждой строки динамически создается отдельный объект?
----
Добавлено через 9 часов 36 минут
А еще не понятно, как делать это:
длина строки результата равна длине большей из строк; в случае необходимости
более короткая битовая строка расширяется влево знаковым разрядом
Каким образом более короткая битовая строка расширяется влево знаковым разрядом?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
KATbIK
86 / 81 / 10
Регистрация: 02.08.2011
Сообщений: 335
08.11.2011, 08:35     Задача по наследованию. Не понимаю некоторые моменты в формулировке задания #2
1 символ = 1 байт = ASCII. 10 символов = 10 байт, типа того, что ли (+ \0 , 11 байт). Про строки в книгах инфы много))
[Федя]
9 / 9 / 1
Регистрация: 01.02.2010
Сообщений: 35
08.11.2011, 09:10  [ТС]     Задача по наследованию. Не понимаю некоторые моменты в формулировке задания #3
Вроде же char не обязательно занимает один байт, все зависит от машины
KATbIK
86 / 81 / 10
Регистрация: 02.08.2011
Сообщений: 335
08.11.2011, 09:27     Задача по наследованию. Не понимаю некоторые моменты в формулировке задания #4
Ты на char не зацикливайся, я про кодировку и сколько один символ занимает места. ASCII ff (16)= 255 (10) = 1 байт = 1111 1111.(2) =))

C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
 
using namespace std;
 
int main()
{
    string text = "hhhhjjjjkkkkllllaaaa";
    int length = text.length(); //Значение типа int - хранит длину строки в байтах
    cout << text.length() << endl;
    cout << length << endl;
    return 0;
}
Я так понял. Профи придут и подскажут )))
[Федя]
9 / 9 / 1
Регистрация: 01.02.2010
Сообщений: 35
08.11.2011, 09:56  [ТС]     Задача по наследованию. Не понимаю некоторые моменты в формулировке задания #5
Не думаю что тут уместен класс string. Задание как раз в том, что бы написать свой собственный класс работы со стоками
KATbIK
86 / 81 / 10
Регистрация: 02.08.2011
Сообщений: 335
08.11.2011, 10:06     Задача по наследованию. Не понимаю некоторые моменты в формулировке задания #6
Забудь про string и char (пример), я хотел сказать что для строки "hhhhjjjjkkkkllllaaaa" значение типа int - 20 байт. int lenght = 20;
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.02.2013, 21:13     Задача по наследованию. Не понимаю некоторые моменты в формулировке задания
Еще ссылки по теме:

C++ Найти все цифры десятичной записи числа(не понимаю смысл задания)
C++ Шейкер Сортировка! Непонятны некоторые моменты
Задача по наследованию в C++, нужно реализовать некоторые моменты C++
Объясните некоторые моменты из c++ C++
Не совсем понимаю задания C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
sheldon-yura
30 / 30 / 7
Регистрация: 02.11.2011
Сообщений: 216
20.02.2013, 21:13     Задача по наследованию. Не понимаю некоторые моменты в формулировке задания #7
привет. если у тебя осталась эта прога, можешь ее скинуть? очень надо.
Yandex
Объявления
20.02.2013, 21:13     Задача по наследованию. Не понимаю некоторые моменты в формулировке задания
Ответ Создать тему
Опции темы

Текущее время: 00:19. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru