Написать программу, которая позволяет вычислять площади различных земельных участков - C (СИ)
Формулировка задачи:
Изучаем тему - классы памяти.
Дали такое задание:
Даже не представляю как это делать.
Спасибо
Землеустроителям при распределении земельных участков необходимо определять площадь сложных геометрических фигур. Используется такой алгоритм:
1) определяют координаты X, Y необходимого количества k точек, принадлежащих границе участка;
2) вычисляют сумму Yi (Xi-1–Xi+1), где «i» принадлежит [1,2,3…k] ;
3) площадь участка определяют половины найденной суммы;
4) для контроля полученного значения искомую площадь вычисляют с помощью суммы Xi (Yi+1–Yi-1),де «i» принадлежит [1,2,3…k], которую делать пополам;
5) полученные значения сравнивают, и, если они равны, искомая площадь определена.
Написать программу, которая работает в соответствии указанном алгоритма и позволяет вычислять площади различных земельных участков с разным количеством точек. Связь с пользователем осуществить с помощью меню.
Решение задачи: «Написать программу, которая позволяет вычислять площади различных земельных участков»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <locale.h>
using namespace std;
void area(int k);
float x[100], y[100];
int main() {
int k;
setlocale(LC_ALL, "Rus");
printf("Введите количество точек k >> ");
scanf_s("%d", &k);
for (int i = 0; i < k; i++) {
printf("Введите координаты для %d-ой точки\nX >> ", i+1);
scanf_s("%f", &x[i]);
printf("Y >> ");
scanf_s("%f", &y[i]);
}
area(k);
system("pause");
}
void area(int k) {
float sumX = 0, sumY = 0;
for (int i = 0; i < k; i++) {
sumY += y[i] * (x[i - 1] - x[i + 1]);
sumX += x[i] * (y[i + 1] - y[i - 1]);
printf("%f\t%f\n", sumY, sumX);
}
sumY /= 2.0;
sumX /= 2.0;
if (sumY == sumX) printf("Площадь = %.2lf\n", sumX);
else printf("Неправильно посчитана площадь");
}
Объяснение кода листинга программы
- Ввод количества точек k с помощью функции scanf_s().
- Считывание координат для каждой точки с помощью функции scanf_s().
- Вызов функции area(k) для вычисления площади.
- Вывод на экран результатов вычислений с помощью функции printf().
- Возвращение в основную программу и ожидание нажатия клавиши с помощью функции system(
pause). - Объявление переменных sumX и sumY, инициализированных нулями.
- Вычисление суммы координат Y для каждой точки, используя формулу (x[i - 1] - x[i + 1]) и (y[i + 1] - y[i - 1]).
- Вычисление суммы координат X для каждой точки, используя формулу (x[i] * (y[i + 1] - y[i - 1])).
- Вывод на экран суммы координат Y и X.
- Вычисление среднего значения sumY и sumX, разделив их на 2.0.
- Проверка равенства sumY и sumX.
- Вывод на экран результата проверки.
- Если sumY не равно sumX, то выводится сообщение об ошибке
Неправильно посчитана площадь. - Если sumY равно sumX, то выводится сообщение о площади, рассчитанной по формуле (sumX).
- Конец функции area(k).
- Возвращение в основную программу.
- Конец программы.