Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.77/13: Рейтинг темы: голосов - 13, средняя оценка - 4.77
9 / 9 / 1
Регистрация: 01.02.2010
Сообщений: 35

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

08.11.2011, 08:13. Показов 2687. Ответов 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 минут
А еще не понятно, как делать это:
длина строки результата равна длине большей из строк; в случае необходимости
более короткая битовая строка расширяется влево знаковым разрядом
Каким образом более короткая битовая строка расширяется влево знаковым разрядом?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
08.11.2011, 08:13
Ответы с готовыми решениями:

Задача по наследованию в C++, нужно реализовать некоторые моменты
Написать программу с объектами и реализовать наследование. Ситуация: Klimat (базовый объект), Derevo (выводной объект). a. Klimat:...

решить формулу через оператор for (неясны некоторые моменты задания)
дана формула W(k)=m*v^2/2, где m - масса, v - скорость. Составить алгоритм для получения зависимости W(k) от m, если: v изменяется от...

Проверка задания по наследованию
Ребят посмотрите пожалуйста: Задание: При выполнении этих заданий требуется написать законченную программу, в которой реализуется...

6
 Аватар для KATbIK
86 / 81 / 28
Регистрация: 02.08.2011
Сообщений: 335
08.11.2011, 08:35
1 символ = 1 байт = ASCII. 10 символов = 10 байт, типа того, что ли (+ \0 , 11 байт). Про строки в книгах инфы много))
0
9 / 9 / 1
Регистрация: 01.02.2010
Сообщений: 35
08.11.2011, 09:10  [ТС]
Вроде же char не обязательно занимает один байт, все зависит от машины
0
 Аватар для KATbIK
86 / 81 / 28
Регистрация: 02.08.2011
Сообщений: 335
08.11.2011, 09:27
Ты на 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;
}
Я так понял. Профи придут и подскажут )))
0
9 / 9 / 1
Регистрация: 01.02.2010
Сообщений: 35
08.11.2011, 09:56  [ТС]
Не думаю что тут уместен класс string. Задание как раз в том, что бы написать свой собственный класс работы со стоками
0
 Аватар для KATbIK
86 / 81 / 28
Регистрация: 02.08.2011
Сообщений: 335
08.11.2011, 10:06
Забудь про string и char (пример), я хотел сказать что для строки "hhhhjjjjkkkkllllaaaa" значение типа int - 20 байт. int lenght = 20;
0
31 / 31 / 16
Регистрация: 02.11.2011
Сообщений: 216
20.02.2013, 21:13
привет. если у тебя осталась эта прога, можешь ее скинуть? очень надо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
20.02.2013, 21:13
Помогаю со студенческими работами здесь

Проясните некоторые моменты
Читал книгу, но не все уяснил... 1. В каких конкретно случаях нужно писать writeln и readln вместо write и read? 2. В каких...

Объясните некоторые моменты из c++
Добрый день. Я хочу начать познавать сие творение, т.к. 1 семестр на первом курсе 3 года назад познанием и обучением назвать сложно. А в...

Некоторые моменты в индексации сайта
Здравствуйте. У меня в процессе разработки сайта возник кое-какой вопрос, связанный с его индексацией поисковыми системами (Google и...

Объясните некоторые моменты в задаче
Здравствуйте, вот мне накинули задачу Пользователь вводит число А не более 4-х разрядов. Вывести всевозможные комбинации из цифр этого...

Некоторые моменты с регистрацией на сайте
Всем привет. Имеется html сайт, хочу сделать регистрацию и авторизацию на сайте. Регистрацию сделал, авторизацию тоже. Регистрация работает...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты 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
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru