![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Новичок
Джуниор
Регистрация: 18.12.2011
Сообщений: 2
|
![]()
Задали написать простенькую програмку на классы. Но для кого просто, а для меня вот как-то не очень. В общем условия таковы:
Описать класс, представляющий треугольник. Предусмотреть методы для создания объектов, вычисления площади, периметра и точки пересечения медиан. Описать свойства для получения состояния объекта. При невозможности построения треугольника вывести сообщение. Написать программу, демонстрирующую все разработанные элементы класса. Создать дочерний класс, представляющий прямоугольник. Предусмотреть методы для создания объектов, вычисления площади, периметра и точки пересечения диагоналей. В общем с треугольников вроде разобрался, задаю координаты вершин, он считает периметр, площадь и находит точку пересечения медиан. Всё зашибись. Проблема вот в чём: как сделать дочерний класс "прямоугольник" из треугольника? Ведь из 3-ка можно сделать 4-к только, если 3-к прямоугольный. В общем вот код, помогите, кто сможет. #include <vcl.h> #pragma hdrstop #include <iostream.h> #include <cmath> #include <conio.h> #include <stdlib.h> #include <time.h> #include <iomanip> #include <windows.h> class Triangle { private: double x1, y1; double x2, y2; double x3, y3; public: Triangle(); Triangle(const double&, const double&, const double&, const double&, const double&, const double&); const Triangle& operator= (const Triangle&); double Square(void); double Perimeter(void); void Print_Triangle(void); bool Is_Possible(void); double MedianaX(void); double MedianaY(void); }; class Rectangle : public Triangle { double x1, y1; double x2, y2; double x3, y3; double x4, y4; public: Rectangle(double, double, double, double, double, double, double, double); const Rectangle& operator= (const Rectangle&); double Square(void); double Perimeter(void); void Print_Rectangle(void); double MedianaX(void); double MedianaY(void); }; //------------------------------Класс треугольник-------------------------------------- Triangle::Triangle() {x1=0; y1=0; x2=0; y2=0; x3=0; y3=0;};//Инициализация "нулевого треугольника" Triangle::Triangle(const double& a, const double& b, const double& c, const double& d, const double& e, const double& f) {x1=a; y1=b; x2=c; y2=d; x3=e; y3=f;}; const Triangle& Triangle: ![]() {x1 = x.x1; y1 = x.y1; x2 = x.x2; y2 = x.y2; x3 = x.x3; y3 = x.y3; return *this;}; double Triangle::Square(void) //Вычисление площади { double A=sqrt((y2-y1)*(y2-y1)+(x2-x1)*(x2-x1)); //Длина стороны А double B=sqrt((y3-y2)*(y3-y2)+(x3-x2)*(x3-x2)); //Длина стороны B double C=sqrt((y1-y3)*(y1-y3)+(x1-x3)*(x1-x3)); //Длина стороны С double p = (A + B + C) / 2; //Полумериметр return sqrt(p * (p - A) * (p - C) * (p - B));//Площадь }; double Triangle::Perimeter() //Вычисление периметра { double A=sqrt((y2-y1)*(y2-y1)+(x2-x1)*(x2-x1)); //Длина стороны А double B=sqrt((y3-y2)*(y3-y2)+(x3-x2)*(x3-x2)); //Длина стороны B double C=sqrt((y1-y3)*(y1-y3)+(x1-x3)*(x1-x3)); //Длина стороны С return A + B + C; //Периметр }; void Triangle::Print_Triangle() //Вывод результата { cout << "x1 = " << x1 << ", y1 = " << y1 << endl; cout << "x2 = " << x2 << ", y2 = " << y2 << endl; cout << "x3 = " << x3 << ", y3 = " << y3 << endl; cout << "\n"; cout << "P = " << Perimeter() << ", S = " << Square() << endl; cout << "\n Median's coordinats:\n"; cout << " x= " << MedianaX() << ", y = " << MedianaY() << endl; cout << "\n"; }; bool Triangle::Is_Possible() //Проверка на возможность существования треугольника { double A=sqrt((y2-y1)*(y2-y1)+(x2-x1)*(x2-x1)); //Длина стороны А double B=sqrt((y3-y2)*(y3-y2)+(x3-x2)*(x3-x2)); //Длина стороны B double C=sqrt((y1-y3)*(y1-y3)+(x1-x3)*(x1-x3)); //Длина стороны С return ((A+B)>C) & ((B+C)>A) & ((A+C)>B);}; double Triangle::MedianaX(void) {double x=(x1+x2+x3)/3; return x;} //Координата X double Triangle::MedianaY(void) {double y=(y1+y2+y3)/3; return y;} //Координата Y |
![]() |
![]() |
![]() |
#2 |
Новичок
Джуниор
Регистрация: 18.12.2011
Сообщений: 2
|
![]()
В продолжение:
//------------------------------Класс прямоугольник-------------------------------------- Rectangle::Rectangle(double a, double b, double c, double d, double e, double f, double g, double h) {x1=a; y1=b; x2=c; y2=d; x3=e; y3=f; x4=g; y4=h;}; double Rectangle::Square(void) { double A=sqrt((y2-y1)*(y2-y1)+(x2-x1)*(x2-x1)); //длина стороны А double B=sqrt((y3-y2)*(y3-y2)+(x3-x2)*(x3-x2)); //длина стороны B return A*B;//Площадь }; double Rectangle::Perimeter() { double A=sqrt((y2-y1)*(y2-y1)+(x2-x1)*(x2-x1)); //длина стороны А double B=sqrt((y3-y2)*(y3-y2)+(x3-x2)*(x3-x2)); //длина стороны B return 2*(A + B); //Периметр }; void Rectangle::Print_Rectangle() { cout << "x1 = " << x1 << ", y1 = " << y1 << endl; cout << "x2 = " << x2 << ", y2 = " << y2 << endl; cout << "x3 = " << x3 << ", y3 = " << y3 << endl; cout << "x3 = " << x4 << ", y3 = " << y4 << endl; cout << "\n"; cout << "P = " << Perimeter() << ", S = " << Square() << endl; cout << "\n Diagonal's coordinats:\n"; cout << " x= " << MedianaX() << ", y = " << MedianaY() << endl; cout << "\n"; }; double Rectangle::MedianaX(void) {double x=(x1+x2)/2; return x;} //Координаты X double Rectangle::MedianaY(void) {double y=(y1+y4)/2; return y;} //Координата Y void main() { Triangle t1; //Инициализация "нулевого треугольника" double x1, y1; double x2, y2; double x3, y3; double x4, y4; do { cout << "\n Input x1, y1, x2, y2, x3, y3 \n"; cin >> x1 >> y1 >> x2 >> y2 >> x3 >> y3; //Ввод координат вершин треугольника Triangle t2(x1, y1, x2, y2, x3, y3); //Создание треугольника по введённым координатам if (t2.Is_Possible()) // Проверка на существование { cout << "\n Your Triangle:\n"; t2.Print_Triangle(); t1 = t2; //Проверка на возможность создания прямоугольника cout << "Rectangle can be made from your Triangle. Please, input x4, y4..."; cin >> x4 >> y4; //Присваивание координат треугольника прямоугольнику cout << "May be try a little more?(Y/N)..."; } else { cout << "\n Impossible to create Triangle. Please, press any key to continue...\n"; } } while (_getch() != 'n'); return; }; |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Сконструировать новый класс, соответствующий фигуре «Треугольник» | Саша Амбражевич | Помощь студентам | 0 | 03.03.2011 23:36 |
Сконструировать новый класс, соответствующий фигуре «Треугольник» | Саша Амбражевич | Помощь студентам | 3 | 03.03.2011 08:34 |
В C# описать класс представляющий треугольник | Namles | Помощь студентам | 2 | 20.05.2010 14:49 |
В C# описать класс представляющий треугольник | Namles | Фриланс | 4 | 20.05.2010 01:33 |
Класс треугольник в java | Vitaliy_Kom | Помощь студентам | 0 | 23.11.2009 10:01 |