Написать программу, которая позволяет вычислять площади различных земельных участков - 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("Неправильно посчитана площадь");
}

Объяснение кода листинга программы

  1. Ввод количества точек k с помощью функции scanf_s().
  2. Считывание координат для каждой точки с помощью функции scanf_s().
  3. Вызов функции area(k) для вычисления площади.
  4. Вывод на экран результатов вычислений с помощью функции printf().
  5. Возвращение в основную программу и ожидание нажатия клавиши с помощью функции system(pause).
  6. Объявление переменных sumX и sumY, инициализированных нулями.
  7. Вычисление суммы координат Y для каждой точки, используя формулу (x[i - 1] - x[i + 1]) и (y[i + 1] - y[i - 1]).
  8. Вычисление суммы координат X для каждой точки, используя формулу (x[i] * (y[i + 1] - y[i - 1])).
  9. Вывод на экран суммы координат Y и X.
  10. Вычисление среднего значения sumY и sumX, разделив их на 2.0.
  11. Проверка равенства sumY и sumX.
  12. Вывод на экран результата проверки.
  13. Если sumY не равно sumX, то выводится сообщение об ошибке Неправильно посчитана площадь.
  14. Если sumY равно sumX, то выводится сообщение о площади, рассчитанной по формуле (sumX).
  15. Конец функции area(k).
  16. Возвращение в основную программу.
  17. Конец программы.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4.2 из 5
Похожие ответы