Вычислить периметр многоугольника, целые координаты которого хранятся в массиве структур - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Вычислить периметр многоугольника,целые координаты которого хранятся в массиве структур.Вывести на экран координаты каждой вершины и периметр.Вычисление длины отрезка,заполнение динамического массива координат,вывод координат на экран оформить в виде функций.ПОМОГИТЕ ПОЖАЛУЙСТА

Решение задачи: «Вычислить периметр многоугольника, целые координаты которого хранятся в массиве структур»

textual
Листинг программы
#include <stdio.h>
#include <math.h>
 
struct point
{
    float x;
    float y;
};
 
float sqr(float x);
struct point* read_point (struct point *mass,int n); //чтение точек
void print_point(struct point *mass,int n);
float calc_per(struct point *mass,int n);
 
int main (void)
{
    int n;
    struct point *mass;
    printf ("Vvedite kolichestvo vershin: ");
    scanf ("%d",&n);
    mass=(struct point *)malloc(n*sizeof(struct point));
    mass=read_point(mass,n);
    print_point(mass,n);
    printf ("Perimetr=%.1f\n",calc_per(mass,n));
    return 0;
}
 
float sqr(float x)
{
return x*x;
}
 
float calc_per(struct point *mass,int n)
{
    int i;
    float tmp=0;
    for (i=0;i<n-1;i++)
        {
            tmp+=sqrt(sqr(mass[i+1].x-mass[i].x)+sqr(mass[i+1].y-mass[i].y));
        }
    tmp+=sqrt(sqr(mass[i].x-mass[0].x)+sqr(mass[i].y-mass[0].y));
    return tmp;
}
 
void print_point (struct point* mass,int n)
{
    int i;
    struct point temp;
    for (i=0;i<n;i++)
    {
        printf ("(%.1f;%.1f)\n",mass[i].x,mass[i].y);
    }
}
 
struct point* read_point (struct point *mass,int n)
{
    int i;
    struct point temp;
    for (i=0;i<n;++i)
    {
        scanf ("%f %f", &temp.x,&temp.y);
        mass[i]=temp;
    }
    return mass;
}

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

  1. Включаются необходимые заголовочные файлы: stdio.h и math.h
  2. Определяется структура point, представляющая точку в двумерном пространстве
  3. Определяются функции: sqr(x) - вычисляющая квадрат числа x, calc_per(mass,n) - вычисляющая периметр многоугольника по координатам точек в массиве mass, print_point(mass,n) - выводящая координаты точек на экран, read_point(mass,n) - считывающая координаты точек из стандартного ввода и сохраняющая их в массиве mass
  4. В функции main() создается переменная n для хранения количества вершин многоугольника, затем выделяется память под массив структур point с помощью malloc() и read_point(mass,n) заполняет этот массив координатами вершин многоугольника
  5. Вызывается функция print_point(mass,n) для вывода координат вершин многоугольника на экран
  6. Вычисляется периметр многоугольника с помощью функции calc_per(mass,n) и выводится на экран
  7. В конце программы возвращается 0, что означает успешное выполнение программы

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


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

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

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