|
17 / 18 / 0
Регистрация: 01.02.2012
Сообщений: 182
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Решение всех упражнений из книги Р. Лафоре "Объектно-ориентированное программирование в С++"01.02.2012, 17:47. Показов 212412. Ответов 338
Метки нет (Все метки)
Хотя я и начинающий с++-шник. Хочу помочь другим людям. Здесь я буду выкладывать всё что мне удалось решить. В моих решениях будет много хедеров, делал я это в Dev C++. Ос Win 7 64 bit.
Начнём со второй главы: Упражнение 1
Упражнение 2
Упражнение 3
Упражнение 4
Упражнение 5
Упражнение 6
Упражнение 7
Упражнение 8
Упражнение 9
Упражнение 10 (Намучился с этой задачей)
Упражнение 11
Упражнение 12 (это самая геморная программа на разработку которой ушло больше дня)
14
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 01.02.2012, 17:47 | |
|
Ответы с готовыми решениями:
338
Ищу ответы на задания из книги Лафоре Р. "Объектно-ориентированное программирование в С++" 4 издание. Роберт Лафоре, "Объектно-ориентированное программирование на C++" |
|
261 / 111 / 53
Регистрация: 22.01.2017
Сообщений: 448
|
||||||||||||
| 13.12.2018, 12:20 | ||||||||||||
|
Achill, видимо он хотел добиться этого:
Если задача была инициализировать базовый класс, то ошибка, я в начале не обратил должного внимания. Добавлено через 23 минуты Только заметил про условие, лучше тогда так:
А если нет, в печку книгу с таким количеством опечаток
0
|
||||||||||||
|
0 / 0 / 0
Регистрация: 26.04.2017
Сообщений: 37
|
||||||||||||||||
| 13.12.2018, 12:45 | ||||||||||||||||
|
Нет нет это задания и первые три упражнения имеют решение в конце книги, при чем в англ версии тоже самое с теми же ошибками.
"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 | |||||||
0
|
|||||||
| 13.12.2018, 13:23 | |
|
Не по теме: Кто читает Лафоре в 2018 году? Книга устарела морально.
0
|
|
|
0 / 0 / 0
Регистрация: 26.04.2017
Сообщений: 37
|
||||||
| 13.12.2018, 13:35 | ||||||
|
Условие else обязательно, если инициализировать в списке инициализации конструктора-наследника то строка в любом случае будет отправлена в базовый класс в данном случае в его конструктор и выйдет за пределы массива чего быть не должно.
Строка должна копироваться полностью если она в пределах массива это в случае с else. А если превышает массив то должно копироваться только та часть которая входит в пределы массива, это в классе наследнике в цикле for И так не сработает, я это выше уже написал.
0
|
||||||
|
261 / 111 / 53
Регистрация: 22.01.2017
Сообщений: 448
|
||||||
| 13.12.2018, 14:10 | ||||||
|
Achill, лучше это условие в конструкторе String прописать:
Добавлено через 4 минуты И самое смешное то что здесь наследование и не нужно )
0
|
||||||
|
0 / 0 / 0
Регистрация: 26.04.2017
Сообщений: 37
|
|
| 13.12.2018, 14:19 | |
|
Спасибо, ну можно и так, но там объясняется принцип ООП в книге такой что нужно использовать базовый класс без особых изменений только лишь спецификаторы доступа менять.
И в базовом классе в конструкторе уже есть "strcpy(str, s);" только проверки не было, по этому там по заданию и надо создать класс наследник в котором будет реализована проверка на предел массива, без изменений базового класса(только спецификаторы доступа менять).
0
|
|
|
261 / 111 / 53
Регистрация: 22.01.2017
Сообщений: 448
|
|
| 13.12.2018, 14:44 | |
|
Понятно. Тогда получается что базовый класс плохо реализован. Я лично запутался и тупанул несколько раз...
0
|
|
|
0 / 0 / 0
Регистрация: 26.04.2017
Сообщений: 37
|
|
| 13.12.2018, 14:50 | |
|
Ну базовый класс специально так реализован в раннем упражнении, а в этом упражнении надо это исправить таким образом. В задании об этом и упоминается что в базовом классе нет проверки на выход за пределы массива.
0
|
|
|
0 / 0 / 0
Регистрация: 26.04.2017
Сообщений: 37
|
|
| 17.12.2018, 15:35 | |
|
Интересует задание 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 | ||||||
|
Доброго времени суток!
Решая упражнение 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
|
||||||
|
6353 / 3524 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
|
||||||
| 07.05.2019, 19:55 | ||||||
|
после описания класса инициализация нужна
0
|
||||||
|
0 / 0 / 0
Регистрация: 22.05.2016
Сообщений: 14
|
|
| 08.05.2019, 05:21 | |
|
Премного благодарен!
0
|
|
|
0 / 0 / 0
Регистрация: 22.02.2015
Сообщений: 9
|
|
| 20.06.2019, 01:06 | |
|
А разве это задание не нужно выполнять с массивом char[SIZE] ?, я так и не смог решить эту задачу с массивом char[SIZE]
пришлось продолжить, и оставить на время решение этих задач, они в 7 и 8 главе встречаются вроде. со string уже решал но с char[SIZE] увы так и не смог.
0
|
|
|
593 / 230 / 72
Регистрация: 13.05.2020
Сообщений: 412
|
||||||
| 05.11.2020, 12:11 | ||||||
|
Может пригодится кому.
Глава 15 упражнение 12 (или 11)
0
|
||||||
|
1359 / 857 / 366
Регистрация: 26.02.2015
Сообщений: 3,831
|
|
| 06.11.2020, 00:10 | |
|
0
|
|
|
0 / 0 / 0
Регистрация: 25.07.2020
Сообщений: 36
|
||
| 20.01.2021, 01:35 | ||
|
И что тогда читать?
0
|
||
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
|||
| 20.01.2021, 08:05 | |||
|
Добавлено через 3 минуты Написано там может быть и неплохо стилистически, но с фактологической точки зрения книга плохая.
1
|
|||
|
0 / 0 / 0
Регистрация: 25.07.2020
Сообщений: 36
|
||
| 20.01.2021, 09:46 | ||
|
0
|
||
| 20.01.2021, 09:52 | |
|
0
|
|
| 20.01.2021, 09:52 | |
|
Объектно-ориентированный анализ, Объектно-ориентированное проектирование, Объектно-ориентированное программирование Ошибки в книги Р.Лафоре "Объектно-Ориентирование программирование в C++" Ориентированное программирование в С++ Р. Лафоре Объектно-ориентированное программирование Объектно-ориентированное программирование Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Из невошедшего на форум (диалог с ИИ-гугла)
zorxor 29.07.2026
А вот, что интересно, сказал мне ИИ-гугла:
Этот текст — эмоциональный пост пользователя под ником zorxor на интернет-форуме (вероятно, посвященном мистике, непознанному или альтернативной науке). . . .
|
Был праздник вчера, а я и не знал.
kumehtar 28.07.2026
27. 07. 2026г. Intel Core 2 Duo исполнилось 20 лет
Новости компьютерного мира и их обсуждение (4)
Салют, шампанское, овации!
:drink:
|
Нейтральные знания, чистый код - бла-бла-бла-бла, на самом деле кликбейт и самореклама, плагиат, и вот почему
Hrethgir 27.07.2026
То-есть отклонение такой публикации говорит само за себя, и пусть только возьмут на вооружение после отклонения публикации - это будет чистейшим актом плагиата. Отклонял Хабр.
Дословно, отклонённая. . .
|
тв 16 бой ии
anaschu 27.07.2026
Великий Перелом ИИ: Как уравнения ОДУ Radau дожали цензурные фильтры Алисы
Фиксируем в мемофонде Теории Всего беспрецедентный факт в истории ИИ-зондирования. В затяжном многораундовом. . .
|
|
мв 15. непроверенное, возможно, глюк
anaschu 27.07.2026
НАУЧНО-АНАЛИТИЧЕСКИЙ ОТЧЕТ. РАЗДЕЛ 1. 1: «НАУКА» (РАСШИРЕННАЯ СТЕХИОМЕТРИЧЕСКАЯ И ГЕНЕТИЧЕСКАЯ ВЕРСИЯ)Тема: Теоретическое обоснование инвариантности 19-мерного тензорного ядра непрерывных ОДУ и. . .
|
Очистка реквизитов и табличных частей документа при копировании (вариант 2)
Maks 26.07.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРаботу", разработанного в КА2.
Задача: Заменить алгоритм запрета копирования документов для сотрудников с ролью "Стажер",. . .
|
Доктрина интенционального знания - Доктрина для портала "Срез".
Hrethgir 25.07.2026
Может найдётся кто захочет оценить доктрину. . . Написания правил участия для меня роскошь, требующая лимита времени, поэтому все сообщения не прошедшие модерацию будут видны только участникам портала,. . .
|
сукцессия 44. Решил подать на припринт в межународные сервисы препринтов. Но нужно одобрение от ученых
anaschu 25.07.2026
Английский вариант. Пока кто то не одобрит мою личность, мне не получиться это опубликовать на препринте. Но заявку на публикацию статьи я сегодня подам.
|