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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
ninja2
231 / 187 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
#1

Stack со сменой представления - C++

09.09.2013, 13:44. Просмотров 1280. Ответов 51
Метки нет (Все метки)

Здорова господа!!!

Есть задачка: "Напишите класс Stack, для которого можно сменить представление на стадии выполнения программы. Подсказка: "Любую проблему можно решить введя еще один уровень косвенности" "

Тут не понятно что нам нужно сделать. Рассмотрим просто теоретически, допустим есть у нас класс Stack и нам что нужно от него по создавать производные классы допустим А и допустим B. Создаем указатель на Stack *p И создаем указатель на A *pa и указателю p присваиваем указатель pa и у нас получится что мы изменили представление класса Stack, что бы еще поменять то мы создаем указатель B* pb со своим набором дополнительных функций снова присваиваем p = pb уже новое представление, это имелось введу. Хотя на стадии выполнения имелось в веду
dynamic_cast<>() понятно что перед выполнением мы приведем Stack к нужному типу.

Что понимается под сменой представления на стадии выполнения? Я понимаю полиморфизм имелся введу или что?

А эта строчка что означает: "Любую проблему можно решить введя еще один уровень косвенности" Что такое уровень косвенности, косвенности это как бы через промежуток обращение не на прямую, видимо нужно производные классы создавать.

Объясните новичку!!!!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.09.2013, 13:44
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Stack со сменой представления (C++):

Есть ли связь между STL-stack и stack - высокопроизводительная память? - C++
Куча источников, как всегда много отсебятины, в общем я запутался...

Ошибка: "Unhandled exception: Stack cookie instrumentation code detected a stack-based buffer overrun" - C++
Не могу понять почему значение ChoiceOfPlayer меняется и почему NumberOfRow и NumberOfColumn всегда последние значение цикла. Помогите...

как проинициализировать std::stack<const int> obj ( std::stack<int>{} ); - C++
добрый день. вопрос в коде: http://rextester.com/VCVVML6656 #include &lt;iostream&gt; #include &lt;stack&gt; //-std=c++14...

Циклические программы с регулярной сменой аргумента. - C++
Код С++ //_-------------------------------------------------------------------------- #include &lt;vcl.h&gt; #include &lt;math.h&gt; ...

Циклические программы с регулярной сменой аргумента, содержащие ветвления - C++
Помогите написать программу задачи. Плиз. Вывести на печать значения, удовлетворяют условию y&gt; 1.35 i y &lt;2.4, и соответствующие...

Циклические программы с регулярной сменой аргумента, содержащих разветвления - C++
Лабораторная работа 4. Циклические программы с регулярной сменой аргумента, содержащих разветвления 4.6 вычислить разницу между...

51
vxg
Модератор
3172 / 1975 / 222
Регистрация: 13.01.2012
Сообщений: 7,606
09.09.2013, 13:54 #2
объяснение простое - я тоже ничего не понял, составитель задания был большой оригинал или хочет вырастить из вас моцарта

Добавлено через 44 секунды
...с тем же успехом он мог бы написать короче: любую проблему можно решить)
1
ninja2
231 / 187 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
09.09.2013, 14:02  [ТС] #3
Цитата Сообщение от vxg Посмотреть сообщение
объяснение простое - я тоже ничего не понял, составитель задания был большой оригинал или хочет вырастить из вас моцарта
Так может просто у вас знаний не хватает, что бы понять что имелось в веду в задании? Задание на проектирование классов ООП, что бы понять нужно хорошо знать шаблоны проектирования!

Добавлено через 3 минуты
Давайте господа ваши варианты по решению или я так сделаю как описал, просто наследование от Stack сделаю и поменяю "представление" класса Stack, а потом на стадии выполнения буду приводить к нужному типу. Если так не правильно то как правильно делать????
0
vxg
Модератор
3172 / 1975 / 222
Регистрация: 13.01.2012
Сообщений: 7,606
09.09.2013, 14:06 #4
мой вариант - спросить у преподавателя чего ему нужно. я конечно понимаю - программирование и анализ предложения русского языка вещи чем-то перекликающиеся, но вроде как вместо решения задания приходится гадать шарады... второй вариант - может "волшебные" слова есть в конспектах и их хочет услышать препод
1
ninja2
231 / 187 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
09.09.2013, 14:08  [ТС] #5
Цитата Сообщение от vxg Посмотреть сообщение
мой вариант - спросить у преподавателя чего ему нужно.
Нет это задание из книги Страуструпа.
0
vxg
Модератор
3172 / 1975 / 222
Регистрация: 13.01.2012
Сообщений: 7,606
09.09.2013, 14:11 #6
вот, например, познакомьтесь с выдержкой из книги Бьерн Страуструп. Язык программирования С++
"Унарная операция * называется косвенностью (или операцией
разыменования), она выбирает значение объекта, на который настроен
указатель." - я в шоке. кто бы мог подумать о таком применении великого русского языка. оказывается волей перевода (а может это как раз был очень умный переводчик и беда в том что все остальные переводчики были глупы) операция разыменования была названа косвенностью. хотя в этом тексте она как то слабо нахлобучиваеся на вашу песню
1
ninja2
231 / 187 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
09.09.2013, 14:12  [ТС] #7
vxg, Так почему гадать в задании ж подсказка есть: "Любую проблему можно решить введя еще один уровень косвенности". Читай внимательно!!!
0
vxg
Модератор
3172 / 1975 / 222
Регистрация: 13.01.2012
Сообщений: 7,606
09.09.2013, 14:13 #8
..оо.. я попал пальцем в небо. значит надо исследовать данный труд на заскоки в терминах

Добавлено через 43 секунды
ну и о какой косвенности в данном случае тогда речь? еще один уровень это еще одна звездочка? как то не так
1
ninja2
231 / 187 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
09.09.2013, 14:14  [ТС] #9
Цитата Сообщение от vxg Посмотреть сообщение
вот, например, познакомьтесь с выдержкой из книги Бьерн Страуструп. Язык программирования С++
"Унарная операция * называется косвенностью (или операцией
разыменования), она выбирает значение объекта, на который настроен
указатель." - я в шоке. кто бы мог подумать о таком применении великого русского языка. оказывается волей перевода (а может это как раз был очень умный переводчик и беда в том что все остальные переводчики были глупы) операция разыменования была названа косвенностью. хотя в этом тексте она как то слабо нахлобучиваеся на вашу песню
Да что тут не ясного просто косвенно операция * вызывает operator*() или глобально operator*(тип, тип). Получается косвенно умножает или разыменовывает через вызовы функций.
0
vxg
Модератор
3172 / 1975 / 222
Регистрация: 13.01.2012
Сообщений: 7,606
09.09.2013, 14:16 #10
Цитата Сообщение от ninja2 Посмотреть сообщение
что тут не ясного
неясно зачем разыменование называть косвенность (вообще ни рода ни падежа - что за зверь неясно) и зачем подразумевать у этой косвенности уровень (что за уровень? да это же просто еще одно разыменование ой ла ла). переводчика - к стене. книгу... (защищается от молнии) - в топку - как вариант: читать в оригинале без загонов перевода
1
ninja2
231 / 187 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
09.09.2013, 14:17  [ТС] #11
Не придираемся к словам, смысл же понятно, что такое оператор *. Пофигу как что переведено смысл от этого не исказится.
0
vxg
Модератор
3172 / 1975 / 222
Регистрация: 13.01.2012
Сообщений: 7,606
09.09.2013, 14:21 #12
кстати, в том переводе что я нашел в сети задача о которой речь звучит вообще интересно
13.(*3) Составьте такое описание класса stack, для которого можно
в динамике менять реализацию. Подсказка: "Всякую задачу можно
решить, введя еще одну косвенность".
сравните с
Напишите класс Stack, для которого можно сменить представление (в том переводе это реализация) на стадии выполнения программы (в том переводе это в динамике). Подсказка: "Любую проблему можно решить введя еще один уровень косвенности

таким образом видим что ваш перевод вообще нельзя сделать ибо во время выполнения вы представление (тоже хз что это означает - предположим что имеется ввиду реализация) не измените. короче хх
1
ninja2
231 / 187 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
09.09.2013, 14:22  [ТС] #13
Цитата Сообщение от vxg Посмотреть сообщение
и зачем подразумевать у этой косвенности уровень
ну смотри если мы что касается задачи, если мы обращаемся через посредник к классу, то мы как бы косвенно к им манипулируем, если на прямую то это уже не косвенно. Уровень косвенности создать еще один, я думаю нужно просто наследования сделать от Stack и мы будет "косвенно" обращатся к стек, + добавим какие нить функции.

Плюс на стадии выполнения можно сам Stack поменять либо чисто оставить такой какой есть, либо изменить представление на представление производных классов используя dynamic_cast<>().

Я сам в этом не сильно шарю, но смотрю ты тоже слабувато .
0
vxg
Модератор
3172 / 1975 / 222
Регистрация: 13.01.2012
Сообщений: 7,606
09.09.2013, 14:22 #14
давайте попробуем перевести по-хорошему и решим. я не против
1
ninja2
231 / 187 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
09.09.2013, 14:23  [ТС] #15
Цитата Сообщение от vxg Посмотреть сообщение
таким образом видим что ваш перевод вообще нельзя сделать ибо во время выполнения вы представление (тоже хз что это означает - предположим что имеется ввиду реализация) не измените. короче хх
ну походу ты не знаешь что такое RTTI.
0
09.09.2013, 14:23
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.09.2013, 14:23
Привет! Вот еще темы с ответами:

stack - C++
не могу норм прокомпилировать прогу, вот код, подскажите что не так! #include &lt;stack&gt; #include &lt;iostream&gt; int main() { const int...

Stack overflow - C++
Написал #include &quot;stdafx.h&quot; #include &lt;iostream&gt; using namespace std; #include &lt;math.h&gt; #include &lt;iomanip&gt; #include...

Контейнер stack - C++
есть функция, которая возвращает контейнер stack(точнее ссылку на его верхний элемент return binary.top();). как можно достать все...

Создание stack - C++
Выдаёт ошибку на создание стека почему-то. Не могу понять, почему именно. Вот сама ошибка: error C2143: синтаксическая ошибка:...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

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