Форум программистов, компьютерный форум, киберфорум
Turbo Pascal
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
3 / 3 / 1
Регистрация: 22.10.2013
Сообщений: 16
1

Найти координаты трёх точек, которые образуют треугольник с наименьшей площадью

29.12.2013, 22:30. Показов 1253. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
На плоскости заданы своими координатами N точек, заданные своими координатами. Найти координаты трёх точек, которые образуют треугольник с наименьшей площадью.
Подпрограмма: площадь треугольника, заданного координатами своих вершин.

По-любому там всё неверно решено...
Нужна помощь!

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
  uses crt;
  procedure SquareTR(a,b,c,p,x1,x2,x3,y1,y2,y3,S:real);
begin
  a:=sqrt(sqr(abs(x1-x2))+sqr(abs(y1-y2)));
  b:=sqrt(sqr(abs(x2-x3))+sqr(abs(y2-y3)));
  c:=sqrt(sqr(abs(x3-x1))+sqr(abs(y3-y1)));
  p:=(a+b+c)/2;
  S:=sqrt(p*(p-a)*(p-b)*(p-c));
end;
  var X:array[1..100] of real;
      Y:array[1..100] of real;
      a,b,c,p,x1,x2,x3,y1,y2,y3,S,min:real;
      N,i,j,l:integer;
begin
  clrscr;
  write('Kol-vo tochek: ');
  readln(N);
  min:=0;
  randomize;
  for i:=1 to N do begin
    X[i]:=random(21)-10;
    Y[i]:=random(21)-10;
  end;
  for i:=1 to N do begin
    x1:=X[i];
    y1:=Y[i];
    for j:=1 to N do begin
      if j<>i then begin
        x2:=X[j];
        y2:=Y[j];
      end;
      for l:=1 to N do begin
        if (l<>i) and (l<>i) then begin
          x3:=X[l];
          y3:=Y[l];
        end;
        if S<min then min:=S;
      end;
    end;
  end;
  writeln('min S: ',min);
  readln
end.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.12.2013, 22:30
Ответы с готовыми решениями:

Определить образуют ли треугольник координаты трех точек
Ввести числа , которые являются значениями коор-динат трех точек на плоскости. Определить,...

Найти координаты 3-х точек, которые являются вершинами треугольника с наибольшей площадью
Задача по программированию c++. Помогите с математической частью. Какие формулы, законы, теоремы...

Найти треугольник с наибольшей (наименьшей) площадью
Заданы площади равнобедренных треугольников, найти треугольник с наибольшей (наименьшей) площадью и...

В заданном множестве точек определить, какие из них образуют треугольник наименьшей площади
Доброго времени суток. Срочно нуждаюсь в помощи для решения следующей задачи: В заданном...

1
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32835 / 21172 / 8148
Регистрация: 22.10.2011
Сообщений: 36,431
Записей в блоге: 8
29.12.2013, 22:40 2
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
uses crt;
 
function S(x1,x2,x3,y1,y2,y3:real):real;
var a, b, c, p : real;
begin
  a:=sqrt(sqr(abs(x1-x2))+sqr(abs(y1-y2)));
  b:=sqrt(sqr(abs(x2-x3))+sqr(abs(y2-y3)));
  c:=sqrt(sqr(abs(x3-x1))+sqr(abs(y3-y1)));
  p:=(a+b+c)/2;
  S:=sqrt(p*(p-a)*(p-b)*(p-c));
end;
 
var
  X:array[1..100] of real;
  Y:array[1..100] of real;
  sum, min:real;
  N,i,j,l,c:integer;
  indexi, indexj, indexl : integer;
begin
  clrscr;
  write('Kol-vo tochek: ');
  readln(N);
  min:=maxlongint;
  randomize;
  for i:=1 to N do begin
    X[i]:=random(21)-10;
    Y[i]:=random(21)-10;
  end;
 
  for i:=1 to N do
  begin
    for j:=1 to N do
    begin
      if (i = j) then continue; { пропускаем одинаковые индексы }
      for l:=1 to N do begin
        if (l = i) or (l = j) then continue; { пропускаем одинаковые индексы }
 
        sum := s(X[i], X[j], X[l], Y[i], Y[j], Y[l]);
        if sum = 0 then continue; { пропускаем нулевую площадь: точки расположены на одной линии }
 
        if sum<min then begin
          min:=Sum;
          indexi := i; indexj := j; indexl := l;
        end;
      end;
    end;
  end;
  writeln('min S: ',min:0:2, ' точки: ',
    '[', indexi, '](', x[indexi]:0:0, ',', y[indexi]:0:0, ')',
    '[', indexj, '](', x[indexj]:0:0, ',', y[indexj]:0:0, ')',
    '[', indexl, '](', x[indexl]:0:0, ',', y[indexl]:0:0, ')');
  readln
end.
1
29.12.2013, 22:40
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.12.2013, 22:40
Помогаю со студенческими работами здесь

Выбрать три точки, которые образуют треугольник наименьшей площади
На плоскости задано множество точек. Выбрать три различные не лежащие на одной прямой точки,...

Найти треугольник с наименьшей и наибольшей площадью, вершинами которого будут исходные точки
Дано множество точек (точки заданы своими координатами). Найти треугольник с наименьшей и...

Описать класс треугольник через координаты трех точек
class Triangle { // поля double Ax; double Ay; double...

Во множестве N точек плоскости выделить те три, которые образуют треугольник максимальной площади.
Во множестве N точек плоскости выделить те три, которые образуют треугольник максимальной площади.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru