Форум программистов, компьютерный форум, киберфорум
Turbo Pascal
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
Заблокирован
1

В случайном множестве точек соединить прямой линией две наиболее удаленные друг от друга

06.09.2014, 18:48. Показов 658. Ответов 5
Метки нет (Все метки)

Поисковая система показала мне одну программу, решающую
нечто подобное. Я был удивлён. Судя по всему там был
создан массив от массива (если я что-то понял). Я не понял, как
это делается и как с ним обращаться?
Задача.
Задано 20 случайных точек. Надо определить две из них,
наиболее удаленные друг от друга. И эти точки соединить
прямой линией.
Поскольку точки плохо смотрятся, я нарисовал маленькие
окружности.
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
54
55
56
57
58
59
60
61
62
63
64
65
66
Program O;
Uses Graph,Crt;
const
   n = 20;
type
   mas = array[1..n] of longint;
var
   i,j,x1,y1,x2,y2:integer;
   max: real;
   x,y:mas;
 
procedure iniG;
var
   Driv,Mode:integer;
   Path:string;
begin
   Driv:= Detect;
   Mode:= VGAHi;
   Path:= 'C:\tp\bgi';
   InitGraph (Driv,Mode,Path);
   if GraphResult < 0 then Halt (1);
end;
 
procedure ini;
begin
   SetColor(11);
   for i:= 1 to n do begin
      x[i]:= random(300)+170;
      y[i]:= random(300)+90;
      circle(x[i],y[i],2)
   end
end;
 
function R(x,y,x2,y2:longint):real;
begin
   R:= sqrt(sqr(x2-x) + sqr(y2-y))
end;
 
procedure wer;
var rr: real;
begin
   max:= 0;
   for i:= 1 to n do
   for j:= 1 to n do begin
      rr:= R(x[i],y[i],x[j],y[j]);
      if rr > max then begin
         max:= rr;
         x1:= x[i];
         y1:= y[i];
         x2:= x[j];
         y2:= y[j]
      end
   end
end;
 
begin
   randomize;
   iniG;
   ini;
   wer;
   SetColor(14);
   Line(x1,y1,x2,y2);
   OutTextXY(10,10,'Press_Enter');
   readln;
   CloseGraph;
end.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.09.2014, 18:48
Ответы с готовыми решениями:

Найти две наиболее удаленные друга от друга точки в заданном множестве точек
Координаты n точек на плоскости заданы в виде двумерного массива K. Найти номера двух точек,...

Найти две наиболее удаленные друг от друга точки
Здравствуйте, пытаюсь реализовать проект для работы с 3D объектами, у меня есть матрица, с которой...

Найти две наиболее удаленные друг от друга точки
Товарищи-господа, помогите, пожалуйста, абсолютному &quot;чайнику&quot;! Есть задача: &quot;Дано множество точек...

Множество точек задано на плоскости; найти две наиболее удаленных друг от друга точки
Помогите, пожалуйста, написать программу на С++, используя структуру point для хранения координат...

5
Модератор
63380 / 47073 / 32446
Регистрация: 18.05.2008
Сообщений: 114,102
06.09.2014, 19:08 2
Точки нужно искать так
Pascal
1
2
 for i:= 1 to n-1 do
   for j:= i+ 1 to n do
Зачем проверять лишнее.
1
3 / 3 / 6
Регистрация: 24.03.2014
Сообщений: 65
06.09.2014, 19:18 3
Турбо не имею, но вроде бы что-то такое
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
uses Graph,Crt;
type coord=record
       x,y:integer;
       end;
var a:array[1..20] of coord;
      point1,point2:coord;
      i,j:integer;
      distance,max:real;
procedure iniG;
var
   Driv,Mode:integer;
   Path:string;
begin
   Driv:= Detect;
   Mode:= VGAHi;
   Path:= 'C:\tp\bgi';
   InitGraph (Driv,Mode,Path);
   if GraphResult < 0 then Halt (1);
end;
begin
Randomize;
iniG;
max:=0;
for i:=1 to 20 do 
 begin
 a[i].x:=random(640)+1;
 a[i].y:=random(480)+1;
 end;
for i:=1 to 19 do
 for j:=i+1 to 20 do
  begin
   distance:=sqrt(sqr(a[i].x-a[j].x) + sqr(a[i].y-a[j].y));
   if distance>max then 
    begin
    max:=distance;
    point1.x:=a[i].x;
    point1.y:=a[i].y;
    point2.x:=a[j].x;
    point2.y:=a[j].y;
    end;
end;
for i:=1 to 20 do putpixel(a[i].x,a[i].y,red);
LineTo(point1.x,point1.y,point2.x,point2.y);
CloseGraph;
end.
1
Модератор
63380 / 47073 / 32446
Регистрация: 18.05.2008
Сообщений: 114,102
06.09.2014, 19:23 4
Pascal
1
var a:array[1..20] of integer;
исправить на
Pascal
1
var a:array[1..20] of coord;
Добавлено через 48 секунд
И вообще не понял для чего Ваш код? Автор темы и сам написал и ничего не просил...
1
CrazzyBeer
06.09.2014, 19:30
  #5

Не по теме:

Для проверки себя :)

0
Заблокирован
06.09.2014, 19:39  [ТС] 6
Спасибо всем!
Я так ещё никогда не писал.
Спасибо!
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.09.2014, 19:39

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Наиболее удаленные точки друг от друга
Координаты n точек на плоскости заданы в виде двумерного массива K. Найти номера двух точек,...

В заданном множестве точек найти три пары самых удаленных друг от друга точек
Координаты точки на площади задаются парой действительных чисел. Дано натуральное число n и...

Задан массив точек. Найти номера наиболее и наименее удаленных друг от друга точек.
Условие задачи: В одномерном массиве с четным количеством элементов (2N) находятся координаты N...

Определить пару наиболее удаленных друг от друга точек
Четыре точки заданны координатами А(4,8,2) ; В(-6,5,I.2) ; С(-3,7,-4.5) ; D(7,8,2). Определить...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.