С++  
Автор Сообщение

0
Сообщение С++

приветствую экспертов коммьюнити. начал самостоятельно осваивать с++ и наткнулся на такую задачу:Треугольник задан координатами своих вершин. Найти периметр треугольника. Координаты вершин вводятся с клавиатуры. Реквестирую любую помощь по данному вопросу.
 #include<stdio.h>
#include<math.h>
#include <conio.h>
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= x2-x1;
sum2= y2-y2;
sum3= x3-x2;
sum3= y3-y2;
Perimetr= sum1+sum2+sum3;
printf("Perimetr treugolnika raven %d\n",Perimetr);
getch();
}



14 сен 2014, 20:56
Профиль

0
Сообщение С++

это сишка а не плюсы

математическая библиотека не нужна для арифметических операций

спецификаторы формата в сканф должны быть в кавычках



14 сен 2014, 21:03
Профиль

0
Сообщение С++

Ты бы сперва математчески основал свой алгоритм.Зная координаты вершин тебе нужно строить вектора и вычислять их длину,и уже потом считать периметр,т.е будет примерно так:

#include<stdio.h>
#include<math.h>
#include <conio.h>
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();
}

 



14 сен 2014, 21:15
Профиль

0
Сообщение С++

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 : продолжает писать ошибку мол "неоднозначный вызов перегруженной функции", и хоть бы хны.
 



14 сен 2014, 21:52
Профиль

0
Сообщение С++

http://www.cplusplus.com/

 



14 сен 2014, 22:23
Профиль Skype

0
Сообщение С++

СтепанДмитриевич писал(а):

sum2= y2-y2;




14 сен 2014, 22:24
Профиль Skype

0
Сообщение С++

СтепанДмитриевич писал(а):

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();
}



14 сен 2014, 22:36
Профиль

0
Сообщение С++

Предико благодарен,разобрался,понял.Спасибо ,что помогли юному падовану.



15 сен 2014, 00:26
Профиль
Начать новую тему Эта тема закрыта, вы не можете редактировать и оставлять сообщения в ней.


Перейти:  

На сайте использованы материалы, принадлежащие Blizzard Entertainment. Копирование материалов возможно только c разрешения портала. В противном случае это будет называться уже другим словом.
Рейтинг@Mail.ru