Найти периметр десятиугольника - C (СИ) (74800)
Формулировка задачи:
Даны действительные числа x1,y1,x2,y2..x10,y10. Найти периметр десятиугольника, вершины которого имеют соответственно координаты (х1,у1)(х2,у2)...(х10,у10). Определить процедуру вычисления расстояния между двумя точками, заданными своими координатами! Проверить существование всех треугольников в полученном 10-угольнике!
вот код, помогите пожалуйста понять, почему всегда треугольники не существуют, что не верно в коде?
#include <stdio.h> #include <math.h> #include <stdlib.h> #include <time.h> int Raschet(float x1, float y1, float x2, float y2) { float d; d=sqrt(pow(x2-x1,2)+pow(y2-y1,2)); return d; } int main() { int i,n,s,j; int kx,ky,kx1,kx2; n=10; int x[n], y[n] ,dl[n],dl2[n]; srand (time (NULL)); for (i=0; i<n; i++) { x[i]=(rand()%10); y[i]=(rand()%10); printf("Tochka %i= %2i ; %i\n",i,x[i],y[i]); } s=Raschet(x[i],y[i],x[n],y[n]); for (j=1; j<n; j++) { dl[0]=Raschet(x[0],y[0],x[0+1],y[0+1]); dl[j]=Raschet(x[1], y[1], x[j], y[j]); dl2[j]=Raschet(x[j],y[j],x[n],y[n]); } for (j=0; j<n-2; j++) { kx=dl[j]; kx1=dl[j+2]; kx2=dl2[j]; if ((kx<kx1+kx2) && (kx1<kx+kx2) && (kx2<kx+kx1)) { printf("%i-yi Tpeyg. syshestvyet\n ",j+1); } else {printf("%i-yi Tpeyg. ne syshestvyet\n ",j+1);} } for (i=0; i<(n-1); i++) { s=s+Raschet(x[i],y[i],x[i+1],y[i+1]); } printf("p= %i",s); }
Решение задачи: «Найти периметр десятиугольника»
textual
Листинг программы
int Raschet(float x1, float y1, float x2, float y2)// функция принимает переменные типа float, возвращает типа int { float d; d=sqrt(pow(x2-x1,2)+pow(y2-y1,2)); return d;// переменная d объявлена типа float, а значение функция будет возвращать типа int. Нужно в объявлении функции переделать, что тип она возвращает float, а не int }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д