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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.07.2011, 16:50   #1
blak333
Пользователь
 
Регистрация: 16.11.2010
Сообщений: 25
По умолчанию программа на СИ

помогите пож-та задачу написать
Задано множество треугольников на плоскости координатами вершин P(x1i,y1j),Q(x2i,y2j),R(x3i,y3j) i=1,2,3 …n. Найти элемент множества с наименьшей высотой.
blak333 вне форума Ответить с цитированием
Старый 05.07.2011, 17:53   #2
l1pton17
Пользователь
 
Аватар для l1pton17
 
Регистрация: 01.11.2010
Сообщений: 75
По умолчанию

Для начала почитай это
Считаешь длину сторон треугольника, находишь площадь по формуле, которая с полупериметром. Затем высоту для каждой стороны, формула есть в той ссылке(2S/a). Среди них берешь минимальную, при этом запоминая номер вершины и саму вершину. И сравниваешь с глобальной минимальной высотой)
l1pton17 вне форума Ответить с цитированием
Старый 05.07.2011, 18:08   #3
l1pton17
Пользователь
 
Аватар для l1pton17
 
Регистрация: 01.11.2010
Сообщений: 75
По умолчанию

Не компилировал, так что не знаю правильно ли работает)

Код:
double getlong(int x1, int x2, int y1, int y2)
{
 double res;

 res=sqrt( (x1-x2)*(x1-x2)+(y1-y2)*(y1-y2) );
 return res;
}

double getsq(double a, double b, double c)
{
 double p=(a+b+c)/2;
 double S;
 
 S=sqrt( p*(p-a)*(p-b)*(p-c) );
 return S;
}

int main()
{
 const int N=10;
 int P[N][2];
 int Q[N][2];
 int R[N][2];
 int i,numP,numI;
 double a,b,c,S,Ha,Hb,Hc,Hgl;

 /*Тут сделай ввод массивов P,Q,R*/
 Hgl=-1;
 for (i=0;i<N;i++)
 {
  a=getlong(P[i][1],Q[i][1],P[i][2],Q[i][2]);
  b=getlong(Q[i][1],R[i][1],Q[i][2],R[i][2]);
  c=getlong(P[i][1],R[i][1],P[i][2],R[i][2]);
  S=getsq(a,b,c);
  Ha=2*S/a;
  Hb=2*S/b;
  Hc=2*S/c;
  if ( (Ha>=Hb && Ha>=Hc) && Ha>Hgl)
  {
   numP=1;
   numI=i;
   Hgl=Ha;
  }
  if ( (Hb>=Hc && Hb>=Ha) && Hb>Hgl)
  {
   numP=2;
   numI=i;
   Hgl=Hb;
  }
  if ( (Hc>=Ha && Hc>=Hb) && Hc>Hgl)
  {
   numP=3;
   numI=i;
   Hgl=Hc;
  }
 }
 cout<<"Наименьшая высота у элемента: ";
 if (numP==1) cout<<"P[";
 if (numP==2) cout<<"Q[";
 if (numP==3) cout<<"R[";
 cout<<i<<"]"<<endl;
 cout<<"Высота равна: "<<Hgl<<endl;
 return 0;
}
l1pton17 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программа с применением записей и программа с применение множеств smert99 Помощь студентам 0 16.06.2011 23:14
Программа открыается если есть другая программа. bookkc Паскаль, Turbo Pascal, PascalABC.NET 12 14.10.2009 20:09
[PASCAL]Программа создания файла, программа обработки файла Виколяшка Фриланс 7 23.09.2009 17:38
Программа создания файла, программа обработки файла [PASCAL] Виколяшка Помощь студентам 1 22.09.2009 22:56