Вычислить периметр многоугольника, целые координаты которого хранятся в массиве структур - 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; }
Объяснение кода листинга программы
- Включаются необходимые заголовочные файлы: stdio.h и math.h
- Определяется структура point, представляющая точку в двумерном пространстве
- Определяются функции: sqr(x) - вычисляющая квадрат числа x, calc_per(mass,n) - вычисляющая периметр многоугольника по координатам точек в массиве mass, print_point(mass,n) - выводящая координаты точек на экран, read_point(mass,n) - считывающая координаты точек из стандартного ввода и сохраняющая их в массиве mass
- В функции main() создается переменная n для хранения количества вершин многоугольника, затем выделяется память под массив структур point с помощью malloc() и read_point(mass,n) заполняет этот массив координатами вершин многоугольника
- Вызывается функция print_point(mass,n) для вывода координат вершин многоугольника на экран
- Вычисляется периметр многоугольника с помощью функции calc_per(mass,n) и выводится на экран
- В конце программы возвращается 0, что означает успешное выполнение программы
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д