IPB
ЛогинПароль:

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

> классы,работа с геометрическими объектами., С++
сообщение
Сообщение #1


Бывалый
***

Группа: Пользователи
Сообщений: 233
Пол: Женский
Реальное имя: Dasha

Репутация: -  0  +


Задание следующее:
Написать программу,демонстрирующую работу с объектами двух типов Т1 и Т2,для чего создать систему соответствующих классов. Каждый объект должен иметь идентификатор(в виде произвольной строки символов) и одно или несколько полей для хранения состояния (текущего значения) объекта.
Клиенту(ф-ии main) должны быть доступны следующеие основные операции(методы):создать объект,удалить объект,показать значение объекта и прочие дополнительные операции,которые будут указаны ниже.Операции по созданию и удалению объектов инкапсулировать в классе Factory.Предусмотреть место,позволяющее продемонстрировать заданные операции.
При необходимости в разрабатываемые классы добавляются дополнительные методы(например,конструктор копирования,операция присваивания и тп)для обеспечения надлежащего функционирования этих классов.

Типы объектов
Класс \ Объект
-------------------------------------------------
Triangle \ Треугольник
Quadrate \ Квадрат
Rectangle \ Прямоуголник
Tetragon \ Четырёхуголник
Pentagon Пятиугольник

Перечень дополнительных операций
Операция(метод) \ Описание
-------------------------------------------------------------
Move() \ Переместить объект на плоскости
Compare(T& ob1,T& ob2) \ Сравнить объект 1 и 2 по площади
IsIntersect(T& ob1,T& ob2) \ Определить факт пересечения объектов 1,2(есть\нет)
IsInclude(T& ob1,T& ob2) \ Определить факт включения объекта 2 в объект 1.

T1 \ T2 \ Операция(Метод)
----------------------------------------------
Triangle \ Pentagon \ Move(),Compare(T&,T&)



дык вот....я даже не знаю с чего начать...
помогите,пожалуйста.


--------------------
irreparabilium felix olivio rerum
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Гость






1) ты забыла одну закрывающую скобку (завершающую в функции TFigure::move_it), и получила несколько наведенных ошибок... Кстати, компилятор предупреждает тебя, что функции, содержащие for не будут inline-функциями, поэтому их описания лучше выносить за пределы определения класса...

2)
double getS() const {
  return
  0.5*(
    TPoint[1].y*TPoint[2].x-TPoint[2].y*TPoint[1].x+
    TPoint[2].y*TPoint[3].x-TPoint[3].y*TPoint[2].x-
    TPoint[1].y*TPoint[3].x+TPoint[1].y*TPoint[1].x
  );
}
это неправильно... Чтобы обращаться к точкам, тебе достаточно:
    double getS() const
    {
      return 0.5 * (pts[0].y*pts[1].x - pts[1].y*pts[0].x +
                    pts[1].y*pts[2].x - pts[2].y*pts[1].x -
                    pts[0].y*pts[2].x + pts[0].y*pts[0].x);
    }
- обращаться по имени переменной, а не типа... Причем, заметь, массивы в С++ индексируются с 0 а не с 1... Та же самая ошибка у тебя - при попытке считать координаты точек в конструкторе TPentagon...

3) В классе TPentagon деструктор должен называться ~TPentagon(), а не ~TTriangle()...

4) В классе TPentagon переменная pts не определена в классе, а определена только в конструкторе, т.е. при выходе из конструктора ты все точки потеряешь... Перенеси определение переменной в сам класс...

5) еще одна ощибка - в функции Compare: ты описываешь ее, как возвращающую символ, а пытаешься вернуть строку... Символ - это одиночные апострофы, строка - кавычки... Вот правильное определение:
char Compare(const TFigure &T1, const TFigure &T2)
{
    return (T1.getS() < T2.getS()) ? '<' : '>';
}


6) У тебя нет конструктора по умолчанию для TTriangle и для TPentagon. А ты пытаешься его вызвать...
  TTriangle T1;
А вот как от этого избавиться - это уже вопрос к тебе: ты все-таки решила, что хочешь вводить координаты точек прямо в конструкторе? Тогда делай именно конструкторы по умолчанию... Для TTriangle, например, такой:
    TTriangle(int numPoints = 3) : TFigure("triangle")
    {
        pts = new TPoint[numPoints];
        for(int i=0;i<numPoints;i++)
        {
            TPoint p;
            cout << "Enter coordinates of apex" << i+1 << ":";
            cin << p.x << p.y;

            pts[i] = p;
        }
    }


7) С show_position ты тоже что-то намудрила, там должна быть либо виртуальная функция (переопределяемая в наследниках), как и в случае с getS(), либо... Хотя нет, ты сделай пока виртуальную, а я тебе потом покажу, как еще можно сделать...

Ну, вроде пока все. Постарайся исправить эти ошибки smile.gif

Это не так сложно, как кажется на первый взгляд, ты же только начинаешь ООП, а это - совершенно другой стиль программирования...
 К началу страницы 
+ Ответить 

Сообщений в этой теме
Tribunal   классы,работа с геометрическими объектами.   18.11.2006 16:33
Алена   Начни с построения иерархии с "заглушками…   18.11.2006 21:33
Tribunal   а вот вопросик возник. когда создаю фигуру,ее созд…   18.11.2006 22:01
Алена   Есть, конечно... Что же ты хочешь передавать 6 раз…   18.11.2006 23:09
Tribunal   вот попыталась сделать конструктор... я хочу,чтобы…   19.11.2006 10:59
Tribunal   вот то,что у меня получилось. я не очень разобрала…   19.11.2006 12:29
Алена   1) ты забыла одну закрывающую скобку (завершающую …   20.11.2006 4:35
Tribunal   воть...теперь он еще и на ввод-вывод ругается в не…   20.11.2006 16:01
Алена   Смотри, как я переделала классы... Твоя программа …   20.11.2006 17:51
Tribunal   огромное спасибо!!! :) :) сейчас со вс…   20.11.2006 18:19
best place to buy generic cialis   Levitra Nitric Oxide   31.10.2021 8:26
volvo   Ориентированная площадь вычисляется в 3 строки: …   20.11.2006 19:06
Tribunal   а я с площадью сама разобралась!=) но всё равн…   22.11.2006 18:45
Tribunal   в этой программе мне нужно задействовать дружестве…   2.12.2006 11:08
Tribunal   не могу я понять смысл дружестенных функций...поэт…   4.12.2006 20:02
volvo   Дружественная функция? Как бы объяснить... Ага...…   4.12.2006 22:12
Tribunal   аха...вроде понятно...спасибо большое!=) а не …   4.12.2006 23:07
Tribunal   а если использовать этот алгоритм для проверки пер…   7.12.2006 20:33
volvo   Точка - она и в Африке точка, так что будет работа…   7.12.2006 20:47
hydroxychloroquine for sale amaz   What Is Cephalexin For   18.09.2021 2:12
Tribunal   в общем я решила сравнивать координаты максимумов …   9.12.2006 20:42
Tribunal   изменила код выше   10.12.2006 22:49
Tribunal   воть....как думаете по какой причине можт IsInters…   17.12.2006 16:47
volvo   Приведи пример ввода, на котором выдаются неправил…   17.12.2006 17:10
Tribunal   например, треугольник 0 0 0 5 5 0 прямоугольник 1 …   17.12.2006 20:01
Tribunal   не помогло даже добавление вроде как необходимого …   17.12.2006 20:38
Tribunal   всё)сообразила..всё дело было в типах   18.12.2006 21:01
Гость   Это задача из учебника Павловской "Объектно-о…   25.12.2006 12:01
Гость   Это задача из учебника Павловской "Объектно-…   30.11.2007 15:44
Начинающей программер   Извините, а ктонибудь не может немного переписать …   28.01.2007 22:22
volvo   Показывай, КАК именно пробовал делать (что, куда и…   28.01.2007 22:28
Гость   Я использовал последний пример от Tribunal. Так во…   29.01.2007 4:48
volvo   Я, кстати, только что заметил ошибку в твоих рассу…   29.01.2007 4:59
программер начинающий   т.е. мне надо написать в ф-ии main: new *T1, *T2; …   29.01.2007 21:03
gabriella   Your writings and news are really interesting to m…   12.04.2022 10:23
nishaknapp   Why not settling on games that is fun and at the s…   29.07.2022 17:07
gabriella   I appreciate you spending some time and effort to …   1.08.2022 9:35


 Ответить  Открыть новую тему 
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 15.04.2025 2:36
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name