Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
0 / 0 / 0
Регистрация: 12.12.2010
Сообщений: 4

На плоскости даны 1000 точек...

30.04.2011, 18:36. Показов 1475. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
На плоскости даны 1000 точек. Найти треугольник который будет иметь наибольшую площадь и вывести на экран, и треугольник, и точки. Координаты выбираются случайным образом, точки лежащие внутри треугольника рисуются синим цветом, а снаружи красным.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
30.04.2011, 18:36
Ответы с готовыми решениями:

Даны два множества точек на плоскости
Даны два множества точек на плоскости.Выбрать три различные точки первого множества так,чтобы треугольник с вершинами в этих точках...

Среди множества точек на плоскости найдите пару точек с минимальным расстоянием между ними
Среди множества точек на плоскости найдите пару точек с минимальным расстоянием между ними. Определение расстояния между двумя точками...

Дано множество A из N точек на плоскости. Найти точку (вывести её номер и значение) среди всех точек этого множества
Дано множество A из N точек на плоскости. Найти точку (вывести её номер и значение) среди всех точек этого множества, лежащих в первой...

3
4 / 4 / 3
Регистрация: 18.01.2011
Сообщений: 206
30.04.2011, 19:32
Напишу кратко алгоритм.
1) сначала берешь первую точку, циклом for i:=1 to 1000
2) затем берешь вторую точку, тем же циклом for i:=1 to 1000
3) и третью точку циклом фор i:=1 to 1000, плошадь треугольника поищи в учебнике геометрии, там должна быть площадь треугольника по координатам x,y. Первой площади присваиваешь значение максимальное, затем сравниваешь эту площадь с другими плошадями. Вывести треугольник на экран и координаты точек - это уже дело десятое.
Если ты научишься правльно составлять алгоритмы, то любая задача становится проще простого.
Ну конечно прога будет считать треугольник с тремя одинаковыми координатами, но это не повлияет на правильность ответа данной задачи.Я тож когда-то как ты просил коды программы, но это тебе ни какой пользы практическине приносит, если не поймешь алгоритм...
0
Почетный модератор
 Аватар для Puporev
64316 / 47612 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
30.04.2011, 20:06
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
67
68
69
70
71
72
uses graph;
const t=0.001;
      n=500;{у меня при 1000 зависае, даже 500 долго считает}
{oпределение площади}
function Plosh(a,b,c:pointtype):real;
begin
Plosh:=abs(a.x*(b.y-c.y)+b.x*(c.y-a.y)+c.x*(a.y-b.y))/2;
end;
{проверка внутри или нет}
function Prin(a,b,c,d:pointtype):boolean;
var s,s1,s2,s3:real;
begin
s:=Plosh(a,b,c);{площадь данного треугольника}
s1:=Plosh(a,b,d);{1 маленький}
s2:=Plosh(a,c,d);{2}
s3:=Plosh(b,c,d);{3}
if abs((s1+s2+s3)-s)<t then Prin:=true
{если площади равны с заданной точностью}
else Prin:=false;{не равны}
end;
var m:array[1..n] of pointtype;
    xc,yc,ms,i,j,k,imx,jmx,kmx:integer;
    mx:real;
begin
randomize;
i:=0;
initgraph(i,j,'');
{центр экрана}
xc:=getmaxX div 2;
yc:=getmaxY div 2;
{создаем массив точек, чтобы не считать большие числа, возьмем
координаты по х=[-32..32] по y=[-24..24], потом умножим на 10 при рисовании}
for i:=1 to n do
 begin
  m[i].x:=random(xc div 5)-(xc div 10);
  m[i].y:=random(yc div 5)-(yc div 10);
 end;
{найдем вершины максимального по площади}
mx:=Plosh(m[1],m[2],m[3]);
imx:=1;
for i:=1 to n-2 do
for j:=i+1 to n-1 do
for k:=j+1 to n do
if Plosh(m[i],m[j],m[k])>mx then
 begin
  mx:=Plosh(m[i],m[j],m[k]);
  imx:=i;
  jmx:=j;
  kmx:=k;
 end;
ms:=10;{масштаб}
{нарисуем треугольник}
setcolor(10);
circle(xc+m[imx].x*10,yc-m[imx].y*10,3);
setfillstyle(1,10);
floodfill(xc+m[imx].x*10,yc-m[imx].y*10,10);
circle(xc+m[jmx].x*10,yc-m[jmx].y*10,3);
floodfill(xc+m[jmx].x*10,yc-m[jmx].y*10,10);
circle(xc+m[kmx].x*10,yc-m[kmx].y*10,3);
floodfill(xc+m[kmx].x*10,yc-m[kmx].y*10,10);
line(xc+m[imx].x*10,yc-m[imx].y*10,xc+m[jmx].x*10,yc-m[jmx].y*10);
line(xc+m[jmx].x*10,yc-m[jmx].y*10,xc+m[kmx].x*10,yc-m[kmx].y*10);
line(xc+m[imx].x*10,yc-m[imx].y*10,xc+m[kmx].x*10,yc-m[kmx].y*10);
{нарисуем точки}
for i:=1 to n do
 begin
  if Prin(m[imx],m[jmx],m[kmx],m[i]) then setcolor(9){внутри}
  else setcolor(12);{снаружи}
  circle(xc+m[i].x*10,yc-m[i].y*10,1);
 end;
readln
end.
0
0 / 0 / 0
Регистрация: 12.12.2010
Сообщений: 4
01.05.2011, 11:29  [ТС]
спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
01.05.2011, 11:29
Помогаю со студенческими работами здесь

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

У квадрата ABCD на плоскости известны координаты двух противоположных вершин - точек A и C. Найти координаты точек B и
У квадрата ABCD на плоскости известны координаты двух противоположных вершин - точек A и C. Найти координаты точек B и D. Расположение...

Множество точек на плоскости.
Задана множина точок на площині. Знайти опуклу оболонку цієї множини, тобто опуклий многокутник з вершинами в деяких точках цієї множини,...

Координаты точек плоскости
1. Даны две последовательности целых чисел а1, а2,..., аn и b1, b2,..., bn. Преобразовать последовательность b1, b2,..., bn по следующему...

Задание поля точек на плоскости
Здравствуйте! Как задать поле точек случайно распределенных на плоскости. Спасибо.


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru