|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
26.01.2019, 17:14 | #11 | |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Цитата:
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
|
26.01.2019, 17:46 | #12 |
Старожил
Регистрация: 04.02.2011
Сообщений: 4,550
|
Ottava - а что это за частный случай ? Дело в том, что мой вариант (не подматривал, бо того ответа еще не было ) совпал с Purpoev (тнлепатия, однако). Все равно, еще допиливать надо для "уборки" дублей
Дошло потихоньку, что нулевая длина стороны будет именно у дублей. Последний раз редактировалось digitalis; 26.01.2019 в 21:05. |
26.01.2019, 17:56 | #13 | |
Форумчанин
Регистрация: 05.09.2017
Сообщений: 157
|
Цитата:
Проверка ортогональности по 3-м точкам - недостаточное условие. На вскидку мне кажется что она не найдет левый по рисунку и, скорее всего, даст сбой на правом (вопрос будет ли в целых числах красная точка, как я нарисовал). Надёжнее всего проверять в функции Scalar() какую-нибудь из теорем о прямоугольнике из школьной геометрии, и передавать туда сразу 4 точки. И надо проверять исходный массив на дубли точек (частные случаи, на которых программа споткнётся, а человек - нет - то о чем отметил digitalis про нулевые размера сторон): - одна дублированная точка даст прямоугольник, вырожденный в "уголок" типа L - точка с 4-я дублями даст прямоугольник, "вырожденный в точку". они тоже могут попасть под условие отсева. PS: Кстати, проверять "условие ортогональности 3-х точек" - отличная идея для оптимизации отсева третьей точки. Проверять как сумма квадратов катетов = квадрату гипотенузы, чтобы работало на любых углах поворота прямоугольника в системе координат.
Безопасность с Content Security Policy
Последний раз редактировалось Ottava; 26.01.2019 в 18:04. |
|
26.01.2019, 18:16 | #14 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Там три разных угла четырехугольника проверяется. Попробуй построить четырехуголник с 4-ым не прямым углом, если другие 3 прямые )
ЗЫ - на счет частных случаев - нет ни каких совпадающих точек, которые рисует Сережа. А то начнется - есть совпадающие, или что делать если дробное число ввели, или слово мама вместо числа, или три пары точек вместо минимальных четырех ну и т.п.)
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Последний раз редактировалось Аватар; 26.01.2019 в 18:31. |
26.01.2019, 20:44 | #15 | ||
Форумчанин
Регистрация: 05.09.2017
Сообщений: 157
|
Цитата:
Я сходу увидел только проверку 2-х противоположных углов, этого мало - см рисунок внизу. Проверки 3-х углов однозначно достаточно для Евклидовой геометрии. Цитата:
Правда, они могут возникнуть, когда руками вводишь 100 точек в программу. Я бы перестраховался и проверил массив на дубли, жизнь научила меня не доверять пользовательским данным. Но, согласен, это выходит за рамки поставленного ТЗ.
Безопасность с Content Security Policy
Последний раз редактировалось Ottava; 26.01.2019 в 21:00. |
||
26.01.2019, 21:06 | #16 | |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Цитата:
Код:
p1,p2 - координаты концов отрезков исходящих из точки p и три обращения с разными угловыми точками: Код:
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
|
26.01.2019, 21:32 | #17 |
Форумчанин
Регистрация: 05.09.2017
Сообщений: 157
|
Аватар, нет сомнений, что 99% местных форумчан победят в этой олимпиаде.
Я-то хотел провести мастер-класс при вашей поддержке, чтобы топискстартер сам по шагам додумался до решения этой задачи. Потом - подискутировать есть ли смысл в оптимизации выбора третьей точки - например, проверять образует ли она прямой угол с первыми двумя. Провести эксперимент с замерами времени исполнения. На примере твоей функции Scalar() можно было бы устроить лёгкий холливар о читабельности кода (я, например, сразу в неё и не въехал, и потом тоже не въехал) при его дальнейшей поддержке Далее - поднять тему проверки вводимых пользователем данных и граничных условий. Ведь программе пофигу, она может и КПД > 100% насчитать. Всем интеллектом и разумностью поведения программу может наделить только программист. А в итоге за топикстартера просто решили задачу "коллеги по цеху".
Безопасность с Content Security Policy
Последний раз редактировалось Ottava; 26.01.2019 в 21:37. |
26.01.2019, 21:57 | #18 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
А ни чего, ТС грозился разобраться с кодом, заодно, если и правда будет разбираться, немного придется в аналитическую геометрию или в векторную алгебру въехать. Что бы не казалось, что кроме теоремы Пифагора в геометрии и нет ничего )
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Последний раз редактировалось Аватар; 26.01.2019 в 22:02. |
27.01.2019, 00:49 | #19 | ||
Регистрация: 05.04.2017
Сообщений: 8
|
Вот мой код. И да, можете не искать там ошибки, именно по задаче, если что-то и есть в коде, то оно не мешает правильному условию. К тому же все тесты у меня уже прошли на полный бал.
Код:
Цитата:
Задача была для 7-8 кл (2010 г) Цитата:
|
||
27.01.2019, 01:09 | #20 | ||
Регистрация: 05.04.2017
Сообщений: 8
|
Цитата:
Да и к тому же, я ещё до ваших сообщений последних (да и сюда зашёл,как видите, только сейчас) разобрался с моей проблемой. Уже выше писал, что код у меня (мой) готовый был ещё до сообщений на форумы, и после я убрал лишь одно условие. И судя по этим словам, то некоторые уже видели тему на том форуме. Цитата:
А первый код, и единственный, который здесь был до того как решил проблему - это был с функцией Scalar (25.01.2019, 13:16) И я его тогда сразу проверил, он работал аналогично моему, и не проходил. Так вот, мне там (на "другом" форуме) и объяснили(а вообще напомнили), то , на что я не обращал внимания. |
||
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Олимпиадная задача | 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 |