|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
19.10.2012, 10:52 | #1 |
Пользователь
Регистрация: 16.10.2008
Сообщений: 73
|
Задачи про <vector> и наследование
Дабы не создавать две новые темы, запихну все в одну.
Задача 1. Про <vector>: В начало вектора целого типа дописать нечетные элементы этого вектора. Решение: Решение, собственно, готово,(код ниже) но возникла проблема. Суть проблемы: При первом выполнении цикла, где мы вставляем нечетный элемент в начало списка, все в порядке, но! при втором его выполнении берется откуда-то огромное число на 6-7 порядков большее, чем представленные в массиве. Код: Код:
Есть 4 объекта: точка, линия, круг, цилиндр. С использованием наследования создать все объекты и т.п.(то, что нужно с ними проделать особо не важно) Решение: Код ниже. Суть проблемы: Проблема 1. Предположим я хочу создать функцию, которая будет выводить координаты линии, используя уже реализованную функцию вывода точек(printP(). В основной программе эта функция работает отлично, но в классе CLine, функция printL(); работать категорически отказывается. Проблема 2. Как было бы правильно реализовать конструктор класса CLine? Код:
Заранее спасибо за помощь. |
19.10.2012, 17:56 | #2 |
Санитар
Старожил
Регистрация: 04.10.2008
Сообщений: 2,577
|
Код:
Математически можно сказать что линия - множество точек, а точка - это частный случай линии, в которой начало и конец совпадают, но с точки зрения ООП это тоже будет не верно. наследование тут не нужно, используй агрегацию. Класс линии написан от начала до конца не верно. Я не понял что это такое: (и что ты хотел сделать) Код:
|
19.10.2012, 18:15 | #3 |
Санитар
Старожил
Регистрация: 04.10.2008
Сообщений: 2,577
|
а по первой задаче..., вцелом, ваш код работать должен, я его не менял почти, только отформатировал, вроде бы:
Код:
В вашей задаче элементы должны добавляться в начало, поэтому вектор тут использовать нерационально, посмотрите на дек (если от задания можно отклониться). Ну и лучше использовать итераторы, это улучшит код, т.к. в вашей задаче вам не потребуется контролировать размер вектора и индекс текущего элемента. |
19.10.2012, 18:48 | #4 |
Санитар
Старожил
Регистрация: 04.10.2008
Сообщений: 2,577
|
Код:
|
19.10.2012, 20:18 | #5 |
Пользователь
Регистрация: 16.10.2008
Сообщений: 73
|
Спасибо за советы. Первую задачу я, слава богу, смог реализовать самостоятельно, но во второй-таки надо использовать наследование. Суть задачи состоит в том, чтобы на основе класса "точка" создать классы линия, круг и цилиндр. Мне интересно, как на основе класса точка создать все остальное.
П.с. Я хотел реализовать линию с помощью двух точек начала и конца. П.п.с. Первая задача запустилась на другом компиляторе(MVS 2005), а писалось в MVS 2010. Последний раз редактировалось MyQwErTy; 19.10.2012 в 20:22. |
19.10.2012, 20:33 | #6 | |
Санитар
Старожил
Регистрация: 04.10.2008
Сообщений: 2,577
|
Цитата:
Если препод так интенсивно требует наследование можешь добавить асбстрактный базовый для всех класс с чисто виртуальной функцией типа print(), хотя...это тоже криво как-то. Последний раз редактировалось rrrFer; 19.10.2012 в 20:39. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Задачи про организацию памяти. | alezha | Операционные системы общие вопросы | 0 | 16.01.2012 13:51 |
[Turbo Pascal] - задачи про подбрасывание монеты и про определение истины. | Sent Tools | Помощь студентам | 10 | 28.10.2010 18:11 |
Вопрос про vector и обычный массив | certman | Общие вопросы C/C++ | 2 | 02.04.2010 23:38 |
Вопрос про vector функцию insert | Dimedrolum | Общие вопросы C/C++ | 2 | 18.09.2009 22:51 |
Чисто задачи (про карты) | Simply-Art | Общие вопросы Delphi | 2 | 29.01.2007 13:50 |