Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.03.2009, 17:08   #11
XuTpbIu
Злобстер
Форумчанин
 
Аватар для XuTpbIu
 
Регистрация: 19.03.2009
Сообщений: 134
По умолчанию

Уравнение прямой по 2 точкам:
y-y0 = ((y1-y0)/(x1-x0))*(x-x0)
Таким образом описанное тобой:
А = (y1-y0)
B = -(x1-x0)
C = (y1-y0)*x0+y0(x1-x0)
Растояние от точки (х2, y2) до прямой будет равно:
d=|(A*x2+B*y2+C)/sqrt(A^2 + B^2)|
Вроде никаких сложностей нет.
Svetlag
В твоём решении по сути делается то же самое.
От знаний ещё никто не умирал, но рисковать не стоит.
XuTpbIu вне форума Ответить с цитированием
Старый 23.03.2009, 17:32   #12
Agent[PNZ]
Пользователь
 
Регистрация: 20.11.2007
Сообщений: 37
По умолчанию

Ну, все верно, из заданной точки проводим прямые к вершинам треугольника, по коорлдинатам находим две стороны, а третья - собственно расстояние от точки до прямой считаем через площадь треугольника.
Agent[PNZ] вне форума Ответить с цитированием
Старый 23.03.2009, 18:16   #13
Svetlag
Пользователь
 
Аватар для Svetlag
 
Регистрация: 24.02.2009
Сообщений: 85
По умолчанию

Во-первых программа не моя, я лишь пытаюсь помочь ошибки исправить. Там был указанный способ расчета. Во-вторых, у меня нет сложностей при работе с уравнениями и коэффициентами, а вот у автора темы есть. Поэтому я попыталась объяснить попроще, т.к. представив визуально задачу, всегда легче ее понять и решить.
А второй способ при правильной реализации будет работать и даст тот же результат. В этом абсолютно согласна.
Svetlag вне форума Ответить с цитированием
Старый 23.03.2009, 22:00   #14
Agent[PNZ]
Пользователь
 
Регистрация: 20.11.2007
Сообщений: 37
По умолчанию

Svetlag
Та программа код которой ты написал, не работает, не пойму почему, посмотри пожалста.
Agent[PNZ] вне форума Ответить с цитированием
Старый 24.03.2009, 10:33   #15
Svetlag
Пользователь
 
Аватар для Svetlag
 
Регистрация: 24.02.2009
Сообщений: 85
По умолчанию

Чтобы не путаться, какой код тестируем, выложу еще раз тот,с которым работаю. Тестовые входные данные 9,7; 3,3; 8,2; 7,4. Выход - 1,37281.
подробнее пожалуйста, что именно не работает.
Код:
#include <iostream.h>
#include <math.h>
typedef double D;  

//определение длины стороны треугольника
D Line(D a,D b,D c,D d)
{
	return sqrt((c-a)*(c-a)+(d-b)*(d-b)); // sqrt - корень
}

//расчет расстояния от точки до стороны треугольника
//т.е. высоты треугольника с вершиной в заданной точке
D Geron(D a1, D a2,D b1, D b2, D o1, D o2)
{
  D ab = Line(a1, a2, b1, b2);
  D bo = Line(b1, b2, o1, o2);
  D oa = Line(o1, o2, a1, a2);
  D p=(ab+bo+oa)/2;
  return sqrt(p*(p-ab)*(p-bo)*(p-oa))*2/ab;
}
// функция нахождения наименьшего значения
D High (D h1, D h2)
{ 
  if (h1<h2) return h1;
  else return h2;
}


int main()
{
  D x1,y1,x2,y2,x3,y3,x4,y4,S1,S2,S3,H ; // инициализация переменных
 
  cout<<"Vvedite koordinati vershin treygolnika:";
  cout<<"\nx1="; cin>>x1; //ввод координат вершин
  cout<<"y1="; cin>>y1; //ввод координат вершин
  cout<<"x2="; cin>>x2; //ввод координат вершин
  cout<<"y2="; cin>>y2; //ввод координат вершин
  cout<<"x3="; cin>>x3; //ввод координат вершин
  cout<<"y3="; cin>>y3; //ввод координат вершин
  cout<<"Vvedite koordinati to4ku:";
  cout<<"\nx4="; cin>>x4; //ввод координат вершин
  cout<<"y4="; cin>>y4; //ввод координат вершин
  
  S1=Geron(x1,y1,x2,y2,x4,y4); //определение расстояния от точки до каждой из сторон
  S2=Geron(x1,y1,x3,y3,x4,y4); 
  S3=Geron(x2,y2,x3,y3,x4,y4); 

  H=High(High(S1,S2),S3); //определение наименьшего расстояния
  cout<<"Naimenshee rasstoyanie ot to4ki do storoni treygolnika="<<H<<endl;
  
  return 0;
}

Последний раз редактировалось Svetlag; 24.03.2009 в 10:47.
Svetlag вне форума Ответить с цитированием
Старый 24.03.2009, 19:55   #16
Agent[PNZ]
Пользователь
 
Регистрация: 20.11.2007
Сообщений: 37
По умолчанию

Не знаю почему, но после ввода данных программа сразу заканчивает свою работу(
Agent[PNZ] вне форума Ответить с цитированием
Старый 24.03.2009, 21:00   #17
Svetlag
Пользователь
 
Аватар для Svetlag
 
Регистрация: 24.02.2009
Сообщений: 85
По умолчанию

Добавьте в конце system("PAUSE"). Просто я пишу в Visual Studio, не сообразила.
Код:
cout<<"Naimenshee rasstoyanie ot to4ki do storoni treygolnika="<<H<<endl;
system("PAUSE");
return 0;
Svetlag вне форума Ответить с цитированием
Старый 24.03.2009, 21:10   #18
Agent[PNZ]
Пользователь
 
Регистрация: 20.11.2007
Сообщений: 37
По умолчанию

Цитата:
Сообщение от Svetlag Посмотреть сообщение
Добавьте в конце system("PAUSE"). Просто я пишу в Visual Studio, не сообразила.
Код:
cout<<"Naimenshee rasstoyanie ot to4ki do storoni treygolnika="<<H<<endl;
system("PAUSE");
return 0;
ERROR *.cpp 50:
Function "system" should have a prototype
Agent[PNZ] вне форума Ответить с цитированием
Старый 24.03.2009, 21:17   #19
Svetlag
Пользователь
 
Аватар для Svetlag
 
Регистрация: 24.02.2009
Сообщений: 85
По умолчанию

#include <conio.h>
Svetlag вне форума Ответить с цитированием
Старый 24.03.2009, 21:36   #20
Agent[PNZ]
Пользователь
 
Регистрация: 20.11.2007
Сообщений: 37
По умолчанию

Цитата:
Сообщение от Svetlag Посмотреть сообщение
#include <conio.h>
не помогает, таже ошибка
Agent[PNZ] вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Простая задача на тему Структуры Borland C++ Dower Помощь студентам 4 10.03.2009 10:04
Простенькая задача на BORLAND C++ для 1 курса, нужна консультация! Graf Xandr Помощь студентам 5 04.12.2008 20:07
Задача на массив [Borland C++] conqueror Помощь студентам 14 02.06.2008 14:10
задача под windows,помогите написать.Надо написать на Borland C++Builder 6. eddddii Помощь студентам 9 23.05.2008 17:04