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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.01.2019, 21:29   #1
Юрий12
 
Регистрация: 05.04.2017
Сообщений: 8
По умолчанию Олимпиадная задача

Решение сразу показалась не очень-то и сложным. Но теперь зашёл в тупик. Задача на геометрию. Помогите, пожалуйста, язык Pascal или C++, с объяснением хоть каким-нибудь.


Задача - Интересный прямоугольник
Серёжа очень любит рисовать прямоугольники. Обычно Сережа просто рисует у себя в тетрадке точки, а потом выбирает четверки точек, которые образуют прямоугольник.

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

Формат ввода:
N (4 <= N <= 100) - количество точек

X[1] Y[1]

X[2] Y[2]

...

X[N] Y[N]

(0 <=X[i], Y[i] <= 100) -целые числа, которые задают координаты i-ой точки (все точки различные).

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

Пример ввода: Пример вывода:
8......................6
0 0
0 2
0 4
2 0
2 4
4 0
4 2
4 4

Пример ввода: Пример вывода:
15.....................1
0 0
9 2
3 7
3 1
4 4
0 5
0 9
0 3
10 4
8 3
7 9
7 3
1 3
5 2
9 3
Юрий12 вне форума Ответить с цитированием
Старый 25.01.2019, 05:49   #2
Ottava
Форумчанин
 
Регистрация: 05.09.2017
Сообщений: 157
По умолчанию

Цитата:
Сообщение от Юрий12 Посмотреть сообщение
Решение сразу показалась не очень-то и сложным.
А где решение-то?
Любая задача по программированию имеет 2 этапа - сначала придумывается алгоритм решения, а потом он кодируется на языке программирования.

За вас, что, нужно оба эти этапа сделать?
Безопасность с Content Security Policy
Ottava вне форума Ответить с цитированием
Старый 25.01.2019, 11:10   #3
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,536
По умолчанию

Мне думается, олимпиадные задачи даются для поиска талантливых, креативных ребят. А те, кто пытается выпросить (стибрить) ответ - к таким не относится и проходит мимо. Извечная наша привычка к списыванию ?
"
Где это видано,где это слыхано -
Папа решает, а мальчик сдает.
" © из детского фильма
digitalis вне форума Ответить с цитированием
Старый 25.01.2019, 13:16   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Думаешь поможет, олимпиадник? Ввод-вывод сам делай)
Код:
type TMyRecord = record X,Y: Integer; end;

var n,i,j,i1,j1,k: Integer;
    m: array [1..100] of TMyRecord;

function Scalar(p,p1,p2: TMyRecord): Integer;
begin
  Scalar:=(p1.X-p.X)*(p2.X-p.X)+(p1.Y-p.Y)*(p2.Y-p.Y);
end;

  k:=0;
  for i:=1 to n-3 do
    for j:=i+1 to n-2 do
      for i1:=j+1 to n-1 do
        if Scalar(m[i],m[j],m[i1])=0 then
          for j1:=i1+1 to n do
            if (Scalar(m[i1],m[i],m[j1])=0) and (Scalar(m[j],m[i],m[j1])=0) then Inc(k);
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 25.01.2019 в 13:22.
Аватар вне форума Ответить с цитированием
Старый 25.01.2019, 20:02   #5
Юрий12
 
Регистрация: 05.04.2017
Сообщений: 8
По умолчанию

Цитата:
Сообщение от Ottava Посмотреть сообщение
А где решение-то?
Любая задача по программированию имеет 2 этапа - сначала придумывается алгоритм решения, а потом он кодируется на языке программирования.

За вас, что, нужно оба эти этапа сделать?
За меня ничего НЕ НУЖНО делать, Вы этого не обязаны. Тем более, кто я такой, чтобы кого-то заставлять.
Я попросил ПОМОЩИ - Вы мне её со всей своей любезностью дали. Огромное Вам СПАСИБО!!!


Цитата:
Сообщение от digitalis Посмотреть сообщение
Мне думается, олимпиадные задачи даются для поиска талантливых, креативных ребят.
Во-первых, креативные и талантливые не с пелёнок ходят, а учаться этому таланту и, освоив его азы, начинают проявлять свой талант и становятся вскоре лучшими из лучших и т.п. Если бы все, кто не рождён был с гениальным умом, креативным и талантливым опускали руки и занимались чем-то другим, то программистов (хороших) было бы не так много как сейчас, а может и вовсе не было (никто ещё сразу родившись не бежал создавать великий проект, не зная о программировании ничего). Ваш аргумент совершенно неуместен и глуп.


Цитата:
Сообщение от digitalis Посмотреть сообщение
А те, кто пытается выпросить (стибрить) ответ - к таким не относится и проходит мимо. Извечная наша привычка к списыванию ?
"
Где это видано,где это слыхано -
Папа решает, а мальчик сдает.
" © из детского фильма
Во-вторых. Скажите мне пожалуйста, зачем мне этот, как Вы выразились, "ответ", если , например, на той же олимпиаде, я его не пойму(тем более, что вопрос-то задаю не во время олимпиады, да и задать в течение олимпиады по-любому не мог бы), и не смогу реализовать сам что-то подобное и т.д. Вы же такие все "Умные", так чего ж Вы своей "пятой точкой" не докумекали, что если человек просит помощи, то он потом будет сидеть и ни 5 мин, ни 10, ни 30,40,50, и даже не один час, пока не поймёт и не разберётся во всем.

В-третьих. Я занимаюсь сам, у меня нет никаких педагогов, тренеров, вообще никого, у кого я мог хоть ЧТО-ТО спросить. И без них я не плохих результатов достиг. И, да, может и затупил на этой задаче(хотя на то время, на олимпиаде решили её лишь 3 из 40, и с 2010 года по теме "Геометрия" является одной из сложнейших, которые были на данной олимпиаде), и не могу больше придумать других способов(использовал совершенно разные методы: свойства прямоугольника, перпендикуляры ...). И прошу помощи, у более образованных, опытных людей.

Ну и наконец, скажите , пожалуйста, зачем, ЗАЧЕМ, в теме , где человек просит помощи (не только про данный случай, а вообщем, ибо не раз "натыкался" на таких), писать какую-то ерунду,претензии, возмущения, тем более необдуманно???? Не нравится, что человек написал, так , как говорится, Иди ты с Богом, чего писать это, а??? Человек просит, можешь - помоги, не можешь - иди дальше, не хочешь - СПАСИБО!!!!

Последний раз редактировалось Юрий12; 25.01.2019 в 21:51.
Юрий12 вне форума Ответить с цитированием
Старый 25.01.2019, 23:00   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Юра, открою секрет - если на форумах будешь так спрашивать и, особенно, так реагировать, то помощи можешь не дождаться. Тут таких не любят )
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 25.01.2019, 23:50   #7
Юрий12
 
Регистрация: 05.04.2017
Сообщений: 8
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
если на форумах будешь так спрашивать
Я понял, что не прав был в том, что не выложил наброски своего кода, вообщем-то свою идею и т.п.


Цитата:
Сообщение от Аватар Посмотреть сообщение
так реагировать
Но почему это если кто-то может высказать своё мнение и сказать, что хочет - я не могу.
Если для кого-то это было через чур, то ... Извините, ничьи чувства не хотел задеть


Цитата:
Сообщение от Аватар Посмотреть сообщение
то помощи можешь не дождаться. Тут таких не любят )
Значит - есть на свете добрые люди, больше нечего сказать.

Последний раз редактировалось Юрий12; 25.01.2019 в 23:57.
Юрий12 вне форума Ответить с цитированием
Старый 26.01.2019, 10:49   #8
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,536
По умолчанию

Я думаю, что студент ( школьник ), у которого больше соображения, чем апломба, рассуждал бы приблизительно так:
у прямоугольника расстояния между любыми двумя парами точек попарно равны - будь то стороны или диагонали.
и тогда в цикле
Код:
     for i := 1 to N do
       for j := i+1 to N do
          for k := j+1 to N do
             for l := k+1 to N do
выполняем этот поиск - находим эти 3 набора пар точек. Делов-то..
Это навскидку, глубже думать неохота, я свои олимпиады уже отмахал. И ежели в мои рассуждения вкралась ошибка - geben Sie mir, bitte такие 4 точки, для которых это неверно.
Таланты можно ( и нужно ) развивать. Если они есть изначально. А иначе - развивай - не развивай - все равно получишь... хрен те что. Вот так-то, внучок...

Последний раз редактировалось digitalis; 26.01.2019 в 12:36.
digitalis вне форума Ответить с цитированием
Старый 26.01.2019, 13:53   #9
Юрий12
 
Регистрация: 05.04.2017
Сообщений: 8
По умолчанию

Всё! Спасибо всем, кто пытался помочь. На другом форуме мне напомнили, что квадраты - тоже прямоугольники. Всего минута и все проблемы решились. Всем, спасибо!

Последний раз редактировалось Юрий12; 26.01.2019 в 14:08.
Юрий12 вне форума Ответить с цитированием
Старый 26.01.2019, 16:43   #10
Ottava
Форумчанин
 
Регистрация: 05.09.2017
Сообщений: 157
По умолчанию

Цитата:
Сообщение от Юрий12 Посмотреть сообщение
Я понял, что не прав был в том, что не выложил наброски своего кода, вообщем-то свою идею и т.п.
Да, идею тут обсуждать готовы. Ошибки в коде тоже найти помогут.


Цитата:
Сообщение от Юрий12 Посмотреть сообщение
Всё! Спасибо всем, кто пытался помочь. На другом форуме мне напомнили, что квадраты - тоже прямоугольники. Всего минута и все проблемы решились. Всем, спасибо!
Покажите ваше решение, у меня есть ощущение, что оно некорректное
Правильную организацию цикла перебора точек уже показал Аватар, и там вряд ли придумаешь что-то новое. Поэтому интересует ваше условия определения, что "данные 4 точки образуют прямоугольник".

Например, вот этот алгоритм от Puporev с этого "другого форума":
определить являются ли 4 точки вершинами прямоугольника можно исходя из того что длины противоположных сторон
взаимно равны и равны длины диагоналей
- вполне корректен, но сломается на одном "частном случае".



PS: Если не трудно, скажите для какого класса школы эта олимпиадная задача. Она не такая уж и простая, как кажется с первого взгляда...
Безопасность с Content Security Policy

Последний раз редактировалось Ottava; 26.01.2019 в 17:17.
Ottava вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Олимпиадная задача lulia Паскаль, Turbo Pascal, PascalABC.NET 3 02.12.2017 11:20
олимпиадная задача danzel1 Общие вопросы C/C++ 2 21.10.2011 15:15
Олимпиадная задача Alexey_kor Помощь студентам 7 30.01.2011 02:22
Олимпиадная задача. _-Re@l-_ Паскаль, Turbo Pascal, PascalABC.NET 1 09.12.2010 20:53
Олимпиадная задача Carbon Общие вопросы C/C++ 2 23.05.2007 22:07