If20. На числовой оси расположены три точки: $$A$$, $$B$$, $$C$$. Определить, какая из двух последних точек ($$B$$ или $$C$$) расположена ближе к $$A$$, и вывести эту точку и ее расстояние от точки $$A$$.
Решение:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
program if20; var A, B, C: Real; begin Write('Введите координату точки A: '); Readln (A); Write('Введите координату точки B: '); Readln (B); Write('Введите координату точки C: '); Readln (C); if (Abs(A-B)<Abs(A-C)) then Writeln('Ближе точка B: ',B,'. Она находится на расстоянии: ',Abs(A-B)) else Writeln('Ближе точка C: ',C,'. Она находится на расстоянии: ',Abs(A-C)); end. |
Другие задачи из раздела If можно посмотреть здесь.
Если точка А= -1, B= -6, C= 4 — точки B и C — равноудалены. Но если записать по модулю, то тогда | |-1| — |-6| | = 5, | |-1| — |4| | = 3. Точки получаются не равноудаленными. Если я правильно понимаю.
sqrt(sqr(a-b)) и sqrt(sqr(a-c)) подходят для нахождения расстояний
Или просто abs(a-b) и abs(a-c)
Согласен… перемудрил я с модулями…
изменил
на
только в writeln тоже надо поменять, я вообще делал через дополнительную переменную D, которой присвоил потом расстояния. Кстати, у Вас D задано, но нигде не использовано.
точнее, объявлено
Спасибо, всё поправил. Да и D… я использовал её в предыдущих задачах 🙂