3.Tочка върху отсечка
Здравейте! Опитвам се да реша тази задача, но judge ми дава 90 от 100...
Кода:
http://pastebin.com/N5u46k6j
Здравейте! Опитвам се да реша тази задача, но judge ми дава 90 от 100...
Кода:
http://pastebin.com/N5u46k6j
Тази проверка
(point < first && point > second)
не обхваща случая в който първият край на отсечката е по-малък от зададената точка. Да, test case-а [10, 5, 7] е успешен, но [5, 10, 7] не минава, защото първата част на горната проверка се оценява като неистинна. Когато имаш конюнктивен израз от вида a & b, ако a притежава неистинна стойност, проверката се прекратява и b въобще не се разглежда. Затова програмата генерира неверния резултат "out". Решението - едно от тях - е да комбинираш първите две проверки в една, и да обхванеш всеки случаи с разположението на точките:
if (point <= first && point >= second || point >= first && point <= second)
опитах се да редактирам твоя код, но не успях да направя 100/100 само 90/100. тъй като в тези задачи няма нито ин/оут + решението заповядай моето:
http://pastebin.com/m0J37JGG
какво правя в кода:
1. взимам 2 те числа от инпута / началната и крайната точка в отсечката / и със добълнителни 2 променливи ги правя така че първото число винаги да е началото на отсечката, а второто - края, така по-лесно се оринтирах.
след като напрая това
2. взимам и останалата точка Point и започвам да проверявам да ли е вътре или вънка и следователно отпечатвам резултатите.
Мерси :)
Може да погледнеш моя код. Дава ми 100/100. :)
http://pastebin.com/v9HKnQL1
Здравей колега,
1.да ми е по-лесно да си представя даденото в задачата наредих точките по големина отляво надясно, чрез "говорящи" променливи (var firstP и var secondP), които присвояват стойностите от конзолата.
2.Проверявам дали въпросната точка, която именувах Point се намира в интервала между firstP и secondP. В случай, че това е вярно - изпечатваме "in" и за понататъшните пресмятания се налага да декларираме в началото на кода още 2 променливи (firstDiff и secondDiff). В конкретния случай secondDiff пази стойност от разликата на втората точка и търсената точка (point), а firstDiff пази стойност от разликата на търсената точка (point) и първата точка от отсечката. С вложена if конструкция проверявам коя от разликите е по-малка по стойност - тя представлява най-късият път от интересуващата ни точка до една от 2-те точки.
3.Ако въпросната точка не се намира в интервала между firstP и secondP конзолата изпечатва "out" и отново пресмята стойностите на разликите пазени от secondDiff и firstDiff, но този път с Math.Abs, за да не се получи отрицателно число. С вложен if проверяваме и изпечатваме по-малката по стойност разлика, която представлява най-късия път от интересуващата ни точка до една от двете точки, които са краища на отсечката.
ето и кода - работи коректно: http://pastebin.com/8Ph9WLpd
Ясно! Благодаря много!
Друго решение е да се направи проверка кое е по-малкото число (first) и кое по-голямото (second) и тогава да се проверява само :