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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.09.2021, 20:25   #1
nonameii3ii
Пользователь
 
Регистрация: 16.04.2021
Сообщений: 73
По умолчанию Создать класс четырехугольник, члены класса – координаты 4-х точек. Предусмотреть в классе конструктор, методы проверки существования четырехугольника, вычисления и вывода сведений о фигу

Здраствуйте ,есть вот такое задание,нужно сделать через координаты не совсем пойму как решить данную задачу,попробовала просто через точки,но нужно через координаты ,вот то что пыталась делать,знаю что много ошибок,но помогите пожалуйста,буду очень благодарна)
Код:
#include <iostream>
#include<conio.h>
using namespace std;
class Circle
{
protected:
	double A;
	double  B;
	double  C;
	double  D;
public:
	Circle(double  a, double  b, double  c, double  d) {
		A = a;
		B = b;
		C = c;
		D = d;
	}
	double PERIMETR()
	{
		double f = A + B + C + D;
		return f;
	}
	double Area() {
		double q = A * B * C * D;
		return q;
	}
	double DlynaAB() {
		double z;
		return z = A + B;
	}
	double DlynaBD() {
		double n;
		return n = B + D;
	}
	double DlynaAC() {
		double m;
		return m = A + C;
	}
	double DlynaCD() {
		double b;
		return b = C + D;
	}

};
class Paral : public Circle {

};
int main()
{
	Circle circle(3.8, 1.2, 5.5, 4.5);
	cout << "Perimetr=" << circle.PERIMETR();
	cout << endl;
	cout << "Area=" << circle.Area();
	cout << endl;
	cout << "Dlyna storon:";
	cout << endl;
	cout << "AB=" << circle.DlynaAB();cout << endl;
	cout << "BD=" << circle.DlynaBD();cout << endl;
	cout << "AC=" << circle.DlynaAC();cout << endl;
	cout << "CD=" << circle.DlynaCD();cout << endl;
	cout << "Diagonal AD=" << sqrt(circle.DlynaAB()*circle.DlynaAB() + circle.DlynaBD()*circle.DlynaBD());cout << endl;
	cout << "Diagonal BC=" << sqrt(circle.DlynaAC()*circle.DlynaAC() + circle.DlynaCD()*circle.DlynaCD());

}
nonameii3ii вне форума Ответить с цитированием
Старый 10.09.2021, 07:35   #2
NetSpace
Участник клуба
 
Аватар для NetSpace
 
Регистрация: 03.06.2009
Сообщений: 1,814
По умолчанию

а у 4-угольника ещё есть длина всех сторон, диагонали, периметр, площадь, углы... а если 3-мерный, то и объём...
то есть, задаёшь 4 точки (x,y) или что ещё хуже (x,y,z) и надо автоматически рассчитывать все вышеуказанные параметры - информация о твоём 4-угольнике. так?
и да, фигура, указанная на рисунке является ли 4-угольником?
----------
...и впереди нелёгкий путь через математические формулы и проверки условий....
Изображения
Тип файла: jpg 4 уг.JPG (9.9 Кб, 40 просмотров)
Программирование - это единственный способ заставить компьютер делать то, что тебе хочется, а не то, что приходится.

Последний раз редактировалось NetSpace; 10.09.2021 в 07:42.
NetSpace вне форума Ответить с цитированием
Старый 10.09.2021, 13:45   #3
nonameii3ii
Пользователь
 
Регистрация: 16.04.2021
Сообщений: 73
По умолчанию

Я пробовала еще вот так,если что-то не так можете поправитть пожалуйста
Код:
#include <iostream>
#include <math.h>
 
using namespace std;
 
class Quadrilateral
{
protected:
    double _x1, _x2, _x3, _x4;
    double _y1, _y2, _y3, _y4;
    double side1, side2, side3, side4;
public:
    Quadrilateral(double x1, double y1, double x2, double y2, double x3, double y3, double x4, double y4)
    {
        set(x1, y1, x2, y2, x3, y3, x4, y4);
    }
    void set(double x1, double y1, double x2, double y2, double x3, double y3, double x4, double y4)
    {
        _x1 = x1;
        _y1 = y1;
        _x2 = x2;
        _y2 = y2;
        _x3 = x3;
        _y3 = y3;
        _x4 = x4;
        _y4 = y4;
    }
    void square()
    {
        //cout << "Square = " << 0.5*abs((dot_x1*dot_y2 - dot_y1*dot_x2) + (dot_x2*dot_y3 - dot_y2*dot_x3) + (dot_x3*dot_y4 - dot_y3*dot_x4) + (dot_x4*dot_y1 - dot_y4*dot_x1)) << endl;
        cout << "Square of the quadrilateral = " << 0.5*abs((_x1 - _x2)*(_y1 + _y2) + (_x2 - _x3)*(_y2 + _y3) + (_x3 - _x4)*(_y3 + _y4) + (_x4 - _x1)*(_y4 + _y1)) << endl;
    }
    void perimeter()
    {
        side1 = sqrt(((_x1 - _x2) * (_x1 - _x2) + (_y1 - _y2)*(_y1 - _y2)));
        cout << "storona 1=" << side1 << endl;
        side2 = sqrt(((_x1 - _x4) * (_x1 - _x4) + (_y1 - _y4)*(_y1 - _y4)));
        cout << "storona 2=" << side2 << endl;
        side3 = sqrt(((_x2 - _x3) * (_x2 - _x3) + (_y2 - _y3)*(_y2 - _y3)));
        cout << "storona 3=" << side3 << endl;
        side4 = sqrt(((_x3 - _x4) * (_x3 - _x4) + (_y3 - _y4)*(_y3 - _y4)));
        cout << "storona 4=" << side4 << endl;
        cout << "Perimetr of the quadrilateral = " << (side1 + side2 + side3 + side4) << endl;
    }
 
};
 
int main()
{
    Quadrilateral ql(0, 0, 0, 0, 0, 0, 0, 0);
    ql.set(1, 4, 1, 1, 6, 1, 6, 4);
    ql.square();
    ql.perimeter();
    system("pause");
}
nonameii3ii вне форума Ответить с цитированием
Старый 10.09.2021, 15:00   #4
NetSpace
Участник клуба
 
Аватар для NetSpace
 
Регистрация: 03.06.2009
Сообщений: 1,814
По умолчанию

и добавь условие существования 4-угольника:
если хоть 2, 3 или 4 точки полностью совпадают, то он не будет существовать.
и чтоб стороны 1 и 3 не пересекались между собой.
и чтоб стороны 2 и 4 тоже не пересекались, а то будет как на рисунке - не 4 -угольник.
Программирование - это единственный способ заставить компьютер делать то, что тебе хочется, а не то, что приходится.
NetSpace вне форума Ответить с цитированием
Старый 10.09.2021, 20:45   #5
nonameii3ii
Пользователь
 
Регистрация: 16.04.2021
Сообщений: 73
По умолчанию

Можете помочь с написанием,не очень сильно поняла,как реализовать)
nonameii3ii вне форума Ответить с цитированием
Старый 11.09.2021, 14:15   #6
NetSpace
Участник клуба
 
Аватар для NetSpace
 
Регистрация: 03.06.2009
Сообщений: 1,814
По умолчанию

увы. C++ последний раз трогал в 2008-м году. счас больше как-то на Delphi химичу...
нет, язык понятен, но классы не создавали - мы тупо, в лоб решали технические и физические задачи
-подключали библиотеки
-прописывали переменные
-функции и процедуры писали
-само тело программы main void
-реакция на клавиши
-графика
------
а вот классы как-то не давали нам.... так что, я только советовать, что надо добавить...
Программирование - это единственный способ заставить компьютер делать то, что тебе хочется, а не то, что приходится.
NetSpace вне форума Ответить с цитированием
Старый 11.09.2021, 14:26   #7
nonameii3ii
Пользователь
 
Регистрация: 16.04.2021
Сообщений: 73
По умолчанию

Ну а вообщем все правильно?Осталось добавить проверку,так?
nonameii3ii вне форума Ответить с цитированием
Старый 11.09.2021, 16:40   #8
NetSpace
Участник клуба
 
Аватар для NetSpace
 
Регистрация: 03.06.2009
Сообщений: 1,814
По умолчанию

ну, четыре стороны он у тебя считает. вижу формулы. проверок не хватает. углы считать не будешь?
просто можно сделать проверку на существование - это посчитать сумму всех углов и она должна быть =360.
если будет меньше - не существует 4-угольника (см. рисунок выше)
Программирование - это единственный способ заставить компьютер делать то, что тебе хочется, а не то, что приходится.
NetSpace вне форума Ответить с цитированием
Старый 11.09.2021, 19:39   #9
nonameii3ii
Пользователь
 
Регистрация: 16.04.2021
Сообщений: 73
По умолчанию

Я думала просто проверку сделать если Две его противоположные стороны равны то это паралеллограм

Вы говорите проверок не хватает,проверок является ли четырехугольник паралелограммом?

Последний раз редактировалось BDA; 12.09.2021 в 00:42.
nonameii3ii вне форума Ответить с цитированием
Старый 11.09.2021, 20:10   #10
NetSpace
Участник клуба
 
Аватар для NetSpace
 
Регистрация: 03.06.2009
Сообщений: 1,814
По умолчанию

я предлагаю проверку на то, вообще этот произвольный 4-угольник может существовать или нет.
а именно какой формы (квадрат, прямоугольник, ромб, трапеция равнобокая, трапеция прямоугольная или просто косой 4-угольник) - это уже сами придумаете
Программирование - это единственный способ заставить компьютер делать то, что тебе хочется, а не то, что приходится.
NetSpace вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[C++] Создать класс четырехугольник, члены класса – координаты 4-х точек. Witali Фриланс 4 21.06.2019 12:29
Создать класс четырехугольник, члены класса – координаты 4-х точек. Witali Помощь студентам 6 17.06.2019 18:49
Создать класс "прямая", поля класса - координаты двух точек (x1,y1) и (x2,y2) // на C# parol Помощь студентам 0 13.12.2011 14:00