| 
| 
 | Вопрос # 1 417/ вопрос открыт / | 
 |  Доброго времени суток, уважаемые эксперты!Помгите, пожалуйста, написать программу!
 
 Дано множество треугольников. Вывести номера прямоугольных треугольников, в которых ближе всего к началу координат вершина с прямым углом.
 
 По идее это работа с типизированными файлами...
 Примечание #1 (15 марта 2008, 19:33): * треугольники заданы координатами вершин 
 
|  |   Вопрос задала: pinky (статус: Посетитель)Вопрос отправлен: 15 марта 2008, 19:17
 Состояние вопроса: открыт, ответов: 1.
 |  Ответ #1. Отвечает эксперт: Dron Здравствуйте, pinky!Сделаем так. Объявим запись, которая будет характеризовать один треугольник путём задания координат его вершин:
 
 type
  TTriangle = record
    X1,Y1,X2,Y2,X3,Y3: Integer;
  end;Напишем функцию нахождения расстояния между двумя точками по заданным координатам:
 //Функция нахождения расстояния между двумя точками
function GetDist(X1,Y1,X2,Y2: Integer): Real;
begin
  Result:=Sqrt(Sqr(X2-X1)+Sqr(Y2-Y1));
end;А теперь сам процесс... 
 var
  Data: array of TTriangle; //Массив треугольников
  Dists: array of Real; //Массив расстояний от начала координат
  i: Byte;
  A,B,C: Real; //Длины сторон треугольника
  Dist: Real; //Расстояние от начала координат
 
{
...
begin
...
}
 
  SetLength(Data,3);
  SetLength(Dists,3);
  with Data[0] do
  begin
    X1:=2; Y1:=3;
    X2:=6; Y2:=3;
    X3:=2; Y3:=5;
  end;
  with Data[1] do
  begin
    X1:=-3; Y1:=2;
    X2:=-6; Y2:=2;
    X3:=-3; Y3:=6;
  end;
  with Data[2] do
  begin
    X1:=-1; Y1:=-2;
    X2:=2; Y2:=-2;
    X3:=2; Y3:=-6;
  end;
 
  for i := 0 to Length(Data)-1 do
  begin
    A:=GetDist(Data[i].X1,Data[i].Y1,Data[i].X2,Data[i].Y2);
    B:=GetDist(Data[i].X1,Data[i].Y1,Data[i].X3,Data[i].Y3);
    C:=GetDist(Data[i].X2,Data[i].Y2,Data[i].X3,Data[i].Y3);
    if (A > B) and (A > C) then
      Dist:=GetDist(0,0,Data[i].X3,Data[i].Y3)
    else if (B > A) and (B > C) then
      Dist:=GetDist(0,0,Data[i].X2,Data[i].Y2)
    else
      Dist:=GetDist(0,0,Data[i].X1,Data[i].Y1);
    Dists[i]:=Dist;
  end;Координаты я задал вручную, только для проверки. Откуда они у вас будут браться - решайте самостоятельно. Из файла или случайным образом буду генерироваться...Алгоритм такой. Для каждого треугольника:
 а) вычисляем длины сторон;
 б) определяем, какая сторона самая длинная - это будет гипотенуза;
 в) зная, какой отрезок является гипотенузой, автоматически узнаём точку, которая является вершиной прямого угла;
 г) находим расстояние от начала координат до точки-вершины.
 Все расстояния здесь записываются в массив Dists. Что с ними делать дальше - разберётесь. Можете искать минимальное или максимальное, или сортировать. Связь с треугольником по индексу в массиве.
 Желаю удачи!
 
|  | Ответ отправил: Dron (статус: Студент)Время отправки: 15 марта 2008, 20:03
 Оценка за ответ: 5
 Комментарий к оценке: =) |  
 Мини-форум вопросаВсего сообщений: 7; последнее сообщение — 15 марта 2008, 21:41; участников в обсуждении: 2. 
|   | Dron (статус: Студент), 15 марта 2008, 19:20 [#1]:Уточните, каким образом заданы треугольники? Координатами вершин? С уважением. |  
|   | pinky (статус: Посетитель), 15 марта 2008, 19:31 [#2]:дада, они задаются координатами вершин! =) |  
|   | Dron (статус: Студент), 15 марта 2008, 20:05 [#3]:Наверняка лабораторная работа? Зря вы ничего не делаете, а надеетесь, что за вас всё сделают другие... Да, сейчас этот случай, но так бывает не всегда. К тому же, лучше уметь самому, чем всё время списывать, согласитесь? Уверен, вы и не пытались ничего сделать, иначе вопрос был бы более узким и содержал бы только то место, где возникла бы загвоздка. С уважением. |  
|   | pinky (статус: Посетитель), 15 марта 2008, 21:13 [#4]:просто не стала сбивать никого с толку своими а-ля черновиками) а так, да, это лаба... и не могу сказать, что у меня ооочень много свободного времени на то, чтобы досконально разбирать все компоненты обожаемого делфи, ибо в списке того, что нужно сделать, информатика - далеко не единственная( |  
|   | Dron (статус: Студент), 15 марта 2008, 21:17 [#5]:В данной задаче компоненты практически не требуются. Да и в лабах обычно стандартных достаточно  
 Цитата: ибо в списке того, что нужно сделать, информатика - далеко не единственная Да, но это ведь не значит, что нужно её совсем бросать...
 С уважением. |  
|   | pinky (статус: Посетитель), 15 марта 2008, 21:37 [#6]:её можно купить... но не хочется... потому что так остаётся хоть какая-то надежда на то, что я что-то пойму сама) а в целом, хочу я этого или нет, совсем я её не брошу, потому что если я её совсем брошу, меня из инста выгонят)
 если честно, я делфи вижу третий раз в жизни... просто препод поменялся и наши методы сдачи лаб теперь не прокатят))))
 вот и приходится мучиться - зная только то, как написать калькулятор в бэйсике ещё со школы, креативить нечто с геометрическими фигурами, рядами, факториалами, графиками и прочими никомуненужностями ^^
 спасибо за помощь, очень мило :*
 |  
|   | Dron (статус: Студент), 15 марта 2008, 21:41 [#7]:Понятно. P.S. Если несложно, хотелось бы оценку за ответ.
 С уважением. |  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |