16 / 17 / 0
Регистрация: 01.02.2012
Сообщений: 182
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
1 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Решение всех упражнений из книги Р. Лафоре "Объектно-ориентированное программирование в С++"01.02.2012, 17:47. Показов 191456. Ответов 322
Метки нет (Все метки)
Хотя я и начинающий с++-шник. Хочу помочь другим людям. Здесь я буду выкладывать всё что мне удалось решить. В моих решениях будет много хедеров, делал я это в Dev C++. Ос Win 7 64 bit.
Начнём со второй главы: Упражнение 1
Упражнение 2
Упражнение 3
Упражнение 4
Упражнение 5
Упражнение 6
Упражнение 7
Упражнение 8
Упражнение 9
Упражнение 10 (Намучился с этой задачей)
Упражнение 11
Упражнение 12 (это самая геморная программа на разработку которой ушло больше дня)
13
|
01.02.2012, 17:47 | |
Ответы с готовыми решениями:
322
Решение всех упражнений из книги Р. Лафоре "Объектно-ориентированное программирование в С++" Ищу ответы на задания из книги Лафоре Р. "Объектно-ориентированное программирование в С++" 4 издание. Роберт Лафоре, "Объектно-ориентированное программирование на C++" Объектно-ориентированный анализ, Объектно-ориентированное проектирование, Объектно-ориентированное программирование |
261 / 111 / 53
Регистрация: 22.01.2017
Сообщений: 448
|
|||||||||||
13.12.2018, 12:20 | 301 | ||||||||||
Achill, видимо он хотел добиться этого:
Если задача была инициализировать базовый класс, то ошибка, я в начале не обратил должного внимания. С этим все равно не согласен, можете вывод чего-либо вставить в условие, это сравнение не выполнится. Добавлено через 23 минуты Только заметил про условие, лучше тогда так:
А если нет, в печку книгу с таким количеством опечаток
0
|
0 / 0 / 0
Регистрация: 26.04.2017
Сообщений: 37
|
||||||||||||||||
13.12.2018, 12:45 | 302 | |||||||||||||||
Нет нет это задания и первые три упражнения имеют решение в конце книги, при чем в англ версии тоже самое с теми же ошибками.
"error: 'j' was not declared in this scope" По этому и создал с условием отдельным просто не правильно написал, а предполагал то именно сравнить с последним индексом.
Теперь мне надо понять что значит "String(str);" ??? тут создается временный объект который получает str и что дальше куда? или это конструктор который получает str?(это же не возможно) или создается объект str? (и дальше с ним что?) Добавлено через 12 минут Хотя нет
А String(str); тут лишнее получается, или зачем оно ? и у автора оно зачем? что это такое?
0
|
261 / 111 / 53
Регистрация: 22.01.2017
Сообщений: 448
|
||||||
13.12.2018, 13:17 | 303 | |||||
Ошибка, раз никакого посыла не было. Условия else там и не должно быть:
0
|
Nishen
|
13.12.2018, 13:23
#304
|
Не по теме: Кто читает Лафоре в 2018 году? Книга устарела морально.
0
|
0 / 0 / 0
Регистрация: 26.04.2017
Сообщений: 37
|
||||||
13.12.2018, 13:35 | 305 | |||||
Условие else обязательно, если инициализировать в списке инициализации конструктора-наследника то строка в любом случае будет отправлена в базовый класс в данном случае в его конструктор и выйдет за пределы массива чего быть не должно.
Строка должна копироваться полностью если она в пределах массива это в случае с else. А если превышает массив то должно копироваться только та часть которая входит в пределы массива, это в классе наследнике в цикле for И так не сработает, я это выше уже написал.
0
|
261 / 111 / 53
Регистрация: 22.01.2017
Сообщений: 448
|
||||||
13.12.2018, 14:10 | 306 | |||||
Achill, лучше это условие в конструкторе String прописать:
Добавлено через 4 минуты И самое смешное то что здесь наследование и не нужно )
0
|
0 / 0 / 0
Регистрация: 26.04.2017
Сообщений: 37
|
|
13.12.2018, 14:19 | 307 |
Спасибо, ну можно и так, но там объясняется принцип ООП в книге такой что нужно использовать базовый класс без особых изменений только лишь спецификаторы доступа менять.
И в базовом классе в конструкторе уже есть "strcpy(str, s);" только проверки не было, по этому там по заданию и надо создать класс наследник в котором будет реализована проверка на предел массива, без изменений базового класса(только спецификаторы доступа менять).
0
|
261 / 111 / 53
Регистрация: 22.01.2017
Сообщений: 448
|
|
13.12.2018, 14:44 | 308 |
Понятно. Тогда получается что базовый класс плохо реализован. Я лично запутался и тупанул несколько раз...
0
|
0 / 0 / 0
Регистрация: 26.04.2017
Сообщений: 37
|
|
13.12.2018, 14:50 | 309 |
Ну базовый класс специально так реализован в раннем упражнении, а в этом упражнении надо это исправить таким образом. В задании об этом и упоминается что в базовом классе нет проверки на выход за пределы массива.
0
|
0 / 0 / 0
Регистрация: 26.04.2017
Сообщений: 37
|
|
17.12.2018, 15:35 | 310 |
Интересует задание 8 главы 9
мне не совсем понятно что предлагает сделать автор "Для получения лучшего результата используйте в этих функциях возврат по ссылке, чтобы они могли быть использованы с левой стороны знака "равно" дли изменения части существующей строки." Вариант решения который здесь существует на 3 странице не компилируется с ошибкой "error: invalid initialization of non-const reference of type 'Pstring2&' from an rvalue of type 'Pstring2'|" ,а так же я нашел обсуждение этой задачи здесь Метод класса слева от знака равно этот вариант тоже не компилируется(с такой же ошибкой), а то что там предложили ниже " return *(str+n);" это работает НО по книге на данном этапе указатели и их разыменование еще не изучались по этому скорее всего это задание надо решить как-то по другому? [attach] "В некоторых компьютерных языках есть операции, с помощью которых можно выделить часть строки и присвоить ее другой строке. Используя наследование, добавьте такую возможность в класс Pstring из упражнения 2. В новом производном классе Pstring2 разместите три новых функции left(), mid() и right(). s2.left(s1, n); s2.mid(s1, s, n); s3.right(s1, n); Вы можете использовать цикл for для копирования символ за символом подходящих частей строки s1 во временный объект класса Pstring2, который затем их возвратит. Для получения лучшего результата используйте в этих функциях возврат по ссылке, чтобы они могли быть использованы с левой стороны знака "равно" дли изменения части существующей строки."[/attach]
0
|
0 / 0 / 0
Регистрация: 22.05.2016
Сообщений: 14
|
||||||
07.05.2019, 19:52 | 311 | |||||
Доброго времени суток!
Решая упражнение 12.7 наткнулся на ошибку error LNK2001: неразрешенный внешний символ ""private: static class std::basic_fstream<char,struct std::char_traits<char> > Name::namestream" (?namestream@Name@@0V?$basic_fstream@DU?$char_traits@D@std@@@std@@A)" Может кто подсказать что не так? Вот код
0
|
6107 / 3461 / 1406
Регистрация: 07.02.2019
Сообщений: 8,794
|
||||||
07.05.2019, 19:55 | 312 | |||||
после описания класса инициализация нужна
0
|
0 / 0 / 0
Регистрация: 22.05.2016
Сообщений: 14
|
|
08.05.2019, 05:21 | 313 |
Премного благодарен!
0
|
0 / 0 / 0
Регистрация: 22.02.2015
Сообщений: 9
|
|
20.06.2019, 01:06 | 314 |
А разве это задание не нужно выполнять с массивом char[SIZE] ?, я так и не смог решить эту задачу с массивом char[SIZE]
пришлось продолжить, и оставить на время решение этих задач, они в 7 и 8 главе встречаются вроде. со string уже решал но с char[SIZE] увы так и не смог.
0
|
368 / 179 / 56
Регистрация: 13.05.2020
Сообщений: 331
|
||||||
05.11.2020, 12:11 | 315 | |||||
Может пригодится кому.
Глава 15 упражнение 12 (или 11)
0
|
0 / 0 / 0
Регистрация: 25.07.2020
Сообщений: 36
|
|
20.01.2021, 01:35 | 317 |
Почему? База языка там изложена неплохо и почти весь код рабочий и сегодня.
И что тогда читать?
0
|
18842 / 9841 / 2409
Регистрация: 30.01.2014
Сообщений: 17,284
|
|
20.01.2021, 08:05 | 318 |
Лучше всего Липпман "Язык программирования C++. Базовый курс".
Добавлено через 3 минуты База языка там изложена отвратительно, и вы просто напросто испортите себе восприятие базовых языковых концепций. Написано там может быть и неплохо стилистически, но с фактологической точки зрения книга плохая.
1
|
0 / 0 / 0
Регистрация: 25.07.2020
Сообщений: 36
|
|
20.01.2021, 09:46 | 319 |
Благодарю! А что вы думаете насчёт "Стивен Прата - Язык программирования C++"? Тоже старовата, конечно...
0
|
DrOffset
|
20.01.2021, 09:52
Решение всех упражнений из книги Р. Лафоре "Объектно-ориентированное программирование в С++"
#320
|
0
|
20.01.2021, 09:52 | |
Ошибки в книги Р.Лафоре "Объектно-Ориентирование программирование в C++" Ориентированное программирование в С++ Р. Лафоре Объектно-ориентированное программирование Объектно-ориентированное программирование Объектно -ориентированное программирование Объектно-ориентированное программирование Объектно-ориентированное программирование Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |