Написать программу, которая позволяет вычислять площади различных земельных участков - 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).
- Возвращение в основную программу.
- Конец программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д