Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.12.2011, 18:52   #1
Gunstrike
Новичок
Джуниор
 
Регистрация: 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:perator=(const Triangle& x)
{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
Gunstrike вне форума Ответить с цитированием
Старый 18.12.2011, 18:52   #2
Gunstrike
Новичок
Джуниор
 
Регистрация: 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;
};
Gunstrike вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сконструировать новый класс, соответствующий фигуре «Треугольник» Саша Амбражевич Помощь студентам 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