СтепанДмитриевич писал(а):
Root писал(а):
Ты бы сперва математчески основал свой алгоритм.Зная координаты вершин тебе нужно строить вектора и вычислять их длину,и уже потом считать периметр,т.е будет примерно так:
#include #include #include void main() { int x1,x2,x3,y1,y2,y3,sum1,sum2,sum3,Perimetr; printf ("Vvedite pervuju vershinu koordinat\n"); scanf (%d%d ,&x1 , &y1); printf ("Vvedite vtoruju vershinu koordinat\n"); scanf ( %d%d , &x2, &y2); printf("Vvedite tret'ju vershinu koordinat\n"); scanf (%d%d,&x3,&y3); sum1= sqrt(((x2-x1)*(x2-x1))-((y2-y1)*(y2-y1))); sum2= sqrt(((x3-x2)*(x3-x2))-((y3-y2)*(y3-y2))); sum3= sqrt(((x3-x1)*(x3-x1))-((y3-y1)*(y3-y1))); Perimetr= sum1+sum2+sum3; printf("Perimetr treugolnika raven %d\n",Perimetr); getch(); }
А по поводу sqrt : продолжает писать ошибку мол "неоднозначный вызов перегруженной функции", и хоть бы хны.
Функция sqrt() принимает тип дабл в качестве аргумента, поэтому нужно изменить тип переменных с int на float или double(зависит от требуемой точности)
Будет так(можешь еще добавить проверку неравенства треугольника)
#include<stdio.h>
#include<math.h>
#include <conio.h>
void main()
{
float x1,x2,x3,y1,y2,y3,sum1,sum2,sum3,Perimetr;
printf ("Vvedite pervuju vershinu koordinat\n");
scanf ("%f%f" ,&x1 , &y1);
printf ("Vvedite vtoruju vershinu koordinat\n");
scanf ("%f%f" , &x2, &y2);
printf("Vvedite tret'ju vershinu koordinat\n");
scanf ("%f%f",&x3,&y3);
sum1= sqrt(((x2-x1)*(x2-x1))-((y2-y1)*(y2-y1)));
sum2= sqrt(((x3-x2)*(x3-x2))-((y3-y2)*(y3-y2)));
sum3= sqrt(((x3-x1)*(x3-x1))-((y3-y1)*(y3-y1)));
Perimetr= sum1+sum2+sum3;
printf("Perimetr treugolnika raven %f\n",Perimetr);
getch();
}