Многоугольник (не обязательно выпуклый) задан на плоскости перечислением координат вершин в порядке обхода его границ. Определить площадь многоугольника. Входные данные: Решение. Программа: #include <iostream.h> #include <conio.h> #include <math.h> #include <graphics.h> int x[100]; int y[100]; // массив вершин многоугольника (не более 100 точек) int main() { clrscr(); int i, n; long s, res = 0, sq = 0; cout << "Enter the number of vertices:" << endl; cin >> n; cout << "Enter coordinates:" << endl; for (i = 0; i < n; i++) { cin >> x[i]; // координата x cin >> y[i]; // координата y } int gd, gm; gd = DETECT; initgraph (&gd, &gm, "c:\\temp"); // построение на экране многоугольника for (i = 0; i < n; i++) { circle (x[i] + 150, y[i] + 150, 2); if (i == n - 1) { i = 0; line (x[i] + 150, y[i] + 150, x[n-1] + 150, y[n-1] + 150); break; } line (x[i] + 150, y[i] + 150, x[i+1] + 150, y[i+1] + 150); } // Расчет площади многоугольника через сумму площадей трапеций for (i = 0; i < n; i++) { if (i == 0) { s = x[i]*(y[n-1] - y[i+1]); //если i == 0, то y[i-1] заменяем на y[n-1] res += s; } else if (i == n-1) { s = x[i]*(y[i-1] - y[0]); // если i == n-1, то y[i+1] заменяем на y[0] res += s; } else { s = x[i]*(y[i-1] - y[i+1]); res += s; } } sq = abs(res/2); cout << "-------------" << endl; cout << "Square:" << endl; cout << sq; getch(); return 0; }
Ключевые слова:
многоугольник, полигон, площадь, трапеция, вычисление площади
|
|||