Программа на c++
Всем привет, помогите исправить программу на C++. Вот текст задания: Создать класс четырехугольник, члены класса - координаты 4-х точек. Предусмотреть в классе методы вычисления и вывода сведений о фигуре –длины сторон, диагоналей, периметр, площадь. Создать производный класс – равнобочная трапеция, предусмотреть в классе проверку, является ли фигура равнобочной трапецией. Написать программу, демонстрирующую работу с классом: дано N четырехугольников и M трапеций, найти максимальную площадь четырехугольников и количество четырехугольников, имеющих максимальную площадь, и трапецию с наименьшей диагональю. Код на четырёхугольник, а нужно чтоб получилась равнобочная трапеция.
#include <iostream>
#include <math.h>
using namespace std;
class freg {
private:
float x1, x2, x3, x4; // координаты вершин
float y1, y2, y3, y4; // четырехугольника
public:
float s, dia, p;
float a, b, c, d;
int k;
freg(float x1, float x2, float x3, float x4, float y1, float y2, float y3, float y4) {
freg::x1 = x1;
freg::x2 = x2;
freg::x3 = x3;
freg::x4 = x4;
freg::y1 = y1;
freg::y2 = y2;
freg::y3 = y3;
freg::y4 = y4;
} // конструктор с параметрами
freg() // конструктор без параметров
{
x1 = 0;
x2 = 0;
x3 = 0;
x4 = 0;
y1 = 0;
y2 = 0;
y3 = 0;
y4 = 0;
}
public:
void setxy() //установка координат вершин
{
k = 0;
cout << "Введите координаты точки 1: ";
cin >> x1 >> y1;
k++;
cout << "Введите координаты точки 2: ";
cin >> x2 >> y2;
k++;
cout << "Введите координаты точки 3: ";
cin >> x3 >> y3;
k++;
cout << "Введите координаты точки 4: ";
cin >> x4 >> y4;
k++;
}
float dlstra() // вычисление длины стороны a
{
if ((x2 != x1) || (y2 != y1)) {
a = sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));
cout << " a=" << a << endl;
} else a = 0;
return a;
}
float dlstrb() // вычисление длины стороны b
{
if ((x2 != x3) || (y2 != y3)) {
b = sqrt((x3 - x2) * (x3 - x2) + (y3 - y2) * (y3 - y2));
cout << " b=" << b << endl;
} else b = 0;
return b;
}
float dlstrc() // вычисление длины стороны c
{
if ((x3 != x4) || (y3 != y4)) {
c = sqrt((x3 - x4) * (x3 - x4) + (y3 - y4) * (y3 - y4));
cout << " c=" << c << endl;
} else c = 0;
return c;
}
float dlstrd() // вычисление длины стороны d
{
if ((x4 != x1) || (y4 != y1)) {
d = sqrt((x4 - x1) * (x4 - x1) + (y4 - y1) * (y4 - y1));
cout << " d=" << d << endl;
} else d = 0;
return d;
}
float diag() // вычисление длины диагонали для расчета площади четырехугольника
{
dia = 0;
if ((x2 != x4) || (y2 != y4))
dia = sqrt((x2 - x4) * (x2 - x4) + (y2 - y4) * (y2 - y4));
return dia;
}
float getstra() {
return a;
}
float getstrb() {
return b;
}
float getstrc() {
return c;
}
float getstrd() {
return d;
}
float prm() {
p = a + b + c + d;
return p;
}
// расчет площади четырехугольника, состоящего из двух треугольников
float sfr(float a1, float b1, float c1, float d1, float da) {
float p1;
p1 = (a1 + d1 + da) / 2;
p1 = p1 * (p1 - a1) * (p1 - da) * (p1 - d1); // формула Герона
s = sqrt(p1);
p1 = (c1 + b1 + da) / 2;
p1 = p1 * (p1 - c1) * (p1 - da) * (p1 - b1);
s = sqrt(p1) + s;
return s;
}
};
class kvadr: public freg {
private: int pr;
public: kvadr(): freg() {
a = 0;
b = 0;
c = 0;
d = 0;
}
int prov() // проверка на квадрат (все стороны равны)
{
if ((a == c) && (b == d) && (a == b)) pr = 1;
else pr = 0;
return pr;
};
int main() {
freg fr1(1, 1, 3, 3, 1, 3, 3, 1);
float pr1 = 0, s = 0, da = 0;
float a, b, c, d;
setlocale(LC_ALL, "rus");
a = fr1.dlstra();
b = fr1.dlstrb();
c = fr1.dlstrc();
d = fr1.dlstrd();
pr1 = fr1.prm();
cout << " периметр= " << pr1 << endl;
da = fr1.diag();
cout << " диагональ= " << da << endl;
s = fr1.sfr(a, b, c, d, da);
cout << " площадь= " << s << endl;
kvadr kv1;
kv1.setxy(); // занесение координат параллелограмма
a = kv1.dlstra();
b = kv1.dlstrb();
c = kv1.dlstrc();
d = kv1.dlstrd();
pr1 = kv1.prm();
cout << " периметр= " << pr1 << endl;
da = fr1.diag();
cout << " диагональ= " << da << endl;
if (kv1.prov() == 1) cout << " kvadrat" << endl;
else cout << " freg" << endl;
return 0;
}
Заранее огромное спасибо.