Работа вам нужна срочно. Не волнуйтесь, уложимся!
Заполните, пожалуйста, данные для автора:
- 22423 авторов готовы помочь тебе.
- 2402 онлайн
Найти площадь многоугольника, заданного перечислением коорди-нат вершин в порядке обхода его границы.
#include
#include
#include
#include
#include
using namespace std;
int const Nmax=20;
class DinArr
{
unsigned n;
float *DA1;
float *DA2;
public:
DinArr(int size)
{
if (size<1 || size>Nmax)
n=Nmax/2;
else n=size;
DA1=new float [n];
DA2=new float [n];
}
void MyDef()//ввод массива
{ for(int i=0; i
cout<<"Enter x["<cin>>(*(DA1+i));
cout<<"Enter y["<cin>>(*(DA2+i));
}
}
void Show()//вывод массива
{
cout<
float *q;
int i=0;
for(p=DA1, q=DA2, i; p<=DA1+n-1, q<=DA2+n-1, i
cout<<"A"<printf("%5.2f,%5.2f", *p, *q);
cout<<")";
cout<
};
void SSS()
{
float S=0;
for(int i=0; i
if(i==n-1)
S=S+(DA1[i]+DA1[0])*(DA2[i]-DA2[0]);
else
S=S+(DA1[i]+DA1[i+1])*(DA2[i]-DA2[i+1]);
};
cout<<"Area="<
~DinArr()
{
cout<<"\nThe destructor deletes array\n" ;
getch();
delete []DA1;
delete []DA2;
}
};
int main()
{
unsigned n;
cout<<"Enter n=";
cin>>n;
DinArr Ob1(n);
Ob1.MyDef();
Ob1.SSS();
Ob1.Show();
getch();
}
Многоугольник задан координатами своих вершин. Найдите площадь этого многоугольника.
#include
#include
using namespace std;
//9.Найти площадб многоугольника
class Plane {
private:
int size;
int* x;
int* y;
public:
Plane(int s): size(s) {
x = new int[s];
y = new int[s];
}
int getSize() {
return size;
}
void printPoints() {
for(int i = 0; i < size; i++) {
cout << "(" << x[i] << ":" << y[i] << ")" << " ";
}
cout << endl;
}
double countTriangleArea(int numb, int numb2, int numb3) {
double a = countDistance(numb, numb2);
double b = countDistance(numb2, numb3);
double c = countDistance(numb3, numb);
double p = (a + b + c)/2;
double area = sqrt(p*(p - a)*(p - b)*(p - c));
return area;
}
double countPolygonArea() {
double area = 0;
for(int i = 0; i < size - 2; i++) {
area += countTriangleArea(0, (i + 1), (i + 2));
}
return area;
}
void readPoints() {
for(int i = 0; i < size; i++) {
cout << "Введите координаты x" << i << ": ";
cin >> x[i];
cout << "Введите координаты y" << i << ": ";
cin >> y[i];
}
}
double countDistance(int numb, int numb2) { //numb - порядковый номер в массиве
double dist = sqrt((pow((x[numb]-x[numb2]), 2)) + (pow((y[numb]-y[numb2]),2)));
return dist;
}
~Plane() {
cout << "Destructor destroy array" << endl;
delete[] x;
delete[] y;
}
};
int main() {
setlocale(LC_ALL,".1251");
srand(time(NULL));
Plane plane(3);
plane.readPoints();
plane.printPoints();
double area = plane.countPolygonArea();
cout << "Площадь заданного " << plane.getSize() << "-угольника: " << area << endl;
return 0;
}