Вычислить расстояние между двумя точками с данными координатами
29.01.2019
Вычислить расстояние между двумя точками с данными координатами на плоскости (x1, y1) и (x2, y2).
Для решения задачи необходимо вспомнить формулу для нахождения расстояния между двумя точками, заданными координатами:
Формула расстояния между двумя точками на плоскости
Далее пишем программу:
program z_2; var x1,y1,x2,y2,L: real; begin write('Введите координаты первой точки (x1, y1) через пробел: '); read(x1, y1); write('Введите координаты второй точки (x2, y2) через пробел: '); read(x2, y2); writeln('Расстояние: ', sqrt(sqr(x2-x1)+sqr(y2-y1))); end.Текст задачи:
Информатика. 10 класс. Базовый уровень. (Семакин И. Г., Хеннер Е. К., Шеина Т. Ю.)
Работа 3.1, Уровень 1, Задача №2Автор:
Как найти расстояние между двумя точками (язык Паскаль)
Нередко на уроках по программированию предлагают задачу из области
математики, это одна из таких задач.
Необходимо вычислить расстояние между двумя точками, заданными
своими целочисленными координатами.
Формула расстояния между двумя точками:
Исходные данные:
x1, y1 – координаты первой точки (тип integer);
x2, y2 – координаты первой точки (тип integer).
Выходные данные:
d – расстояние между двумя точками (тип real).
Необходимые функции:
sqr()
– возведение в квадрат
sqrt()
– извлечение квадратного корня (выдает
значение типа
Опишем переменные в блоке Var
x1,y1,x2,y2:integer; d:real;
Приведем порядок выполнения операторов:
- Ввести с клавиатуры значения координат точек
- Вычислить расстояние по формуле
- Вывести значение расстояния на экран
Программа решения задачи на языке Паскаль:
var x1,y1,x2,y2:integer;
d:real;
begin
writeln(‘Введите координаты двух точек’);
readln(x1,y1,x2,y2);
d:=sqrt(sqr(x2-x1)+sqr(y2-y1));
writeln(‘Расстояние
между точками = ‘,d);
end.
Выполним программу для исходных данных x1=2, y1=5; x2=-2, y2=2.
Изобразим на рисунке положение точек:
Результат выполнения программы:
Введите координаты двух точек
2 5
-2 2
Расстояние между точками = 5
С использованием этой формулы можно решить такую задачу:
Даны целочисленные координаты двух точек, какая из них находится дальше
от начала координат?
Напишите программу решения этой задачи в комментариях.
Если вам понравилась публикация, нажмите “Нравится” в верхней части страницы.
Begin20. Найти расстояние между двумя точками с заданными координатами $$(x_1, y_1)$$ и $$(x_2, y_2)$$ на плоскости. Расстояние вычисляется по формуле $$sqrt{(x_2 — x_1 )^2 + ( y_2 — y_1 )^2}$$ .
Решение:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
program Begin20; var x1,y1,x2,y2,L: Real; begin Writeln(‘Введите значение координат певой точки: ‘); Write(‘Введите значение x: ‘); Readln(x1); Write(‘Введите значение y: ‘); Readln(y1); Writeln(‘Введите значение координат второй точки: ‘); Write(‘Введите значение x: ‘); Readln(x2); Write(‘Введите значение y: ‘); Readln(y2); L:=sqrt(sqr(x1–x2)+sqr(y1–y2)); Writeln(‘Расстояние между точками равно: ‘,L); end. |
Другие задачи из раздела Begin можно посмотреть здесь.
Здесь иллюстрируется использование стандартной функции abs.
var
a,b: real; // координаты точек
r: real; // расстояние между точками на прямой
begin
write('Введите координату точки a: ');
readln(a);
write('Введите координату точки b: ');
readln(b);
r := abs(a-b);
writeln('Расстояние между точками = ',r);
end.
Просмотров: 4082
10.02.2015, 08:44 –
Категория: Статьи » Программирование » Pascal
Коментарии к Вычисление расстояния между двумя точками на прямой на Pascal:
Сегодня мы с вами продолжаем решать задачи Begin11-20. В этой статье не будет блок-схем вообще. «Почему?» — спросите вы. Потому что на данном этапе задачи настолько просты, и настолько дублируют друг друга, что смысла в подробном разборе просто нет.
Begin11. Даны два ненулевых числа. Найти сумму, разность, произведение и частное их модулей.
Для того, чтобы решить данную задачу вы должны вспомнитьвстроенную в Паскаль функцию. Эта функция — abs. Кроме того, хотелось бы рассказать еще об одной интересной фишке. Наверняка, во время тестирования какой-либо программы вы сталкивались с проблемой типа Real. Считая корни, синусы, косинусы и прочее получается примерно такое число — 0.784674838737. Как избежать этого? Для этого после переменной прописываются определенные параметры. Например, write(a:5:2), где 5 — ширина поля вывода, а 2 количество знаков после запятой.
program Begin11; var a, b, summ, razn, proizv, chast: real; begin write('Введите два числа: '); read(a, b); a := abs(a); {используем функцию} b := abs(b); summ := a + b; proizv := a * b; chast := a / b; razn := a - b; writeln('Сумма модулей -- ', summ:5:2); writeln('Разность модулей -- ', razn:5:2); writeln('Частное модулей -- ', chast:5:2); writeln('Произведение модулей -- ', proizv:5:2); end.
Begin12. Даны катеты прямоугольного треугольника a и b.
Найти его гипотенузу c и периметр P: c = √(a2 + b2), P = a + b + c.
Ничего сложного в этой задаче нет.
program Begin12; var a, b, c, p: real; begin write('Введите два катета прямоугольного треугольника: '); read(a, b); c := sqrt(sqr(a) + sqr(b)); p := a + b + c; writeln('Периметр -- ', p:5:2); writeln('Гипотенуза -- ', c:5:2); end.
Begin13. Даны два круга с общим центром и радиусами R1 и R2 (R1 > R2). Найти площади этих кругов S1 и S2, а также площадь S3 кольца, внешний радиус которого равен R1, а внутренний радиус равен R2. S1 = π·(R1)2, S2 = π·(R2)2, S3 = S1 – S2. В качестве значения π использовать 3.14.
Не забываем указывать pi, как константу.
program Begin13; const pi = 3.14; var R1, R2, S1, S2, S3: real; begin write('Введите два радиуса: '); read(R1, R2); S1 := pi * sqr(R1); S2 := pi * sqr(R2); S3 := S1 - S2; writeln('Площадь большего круга -- ', S1:5:2); writeln('Площадь меньшего круга -- ', S2:5:2); writeln('Площадь кольца -- ', S3:5:2); end.
Begin14. Дана длина L окружности. Найти ее радиус R и площадь S круга, ограниченного этой окружностью, учитывая, что L = 2·π·R, S = π·R2. В качестве значения π использовать 3.14.
program Begin14; const pi = 3.14; var L, S, R: real; begin write('Введите длину окружности: '); read(L); R := L / (2 * pi); S := pi * sqr(R); writeln('Площадь круга -- ', S:5:2); writeln('Радиус круга -- ', R:5:2); end.
Begin15. Дана площадь S круга. Найти его диаметр D и длину L окружности,ограничивающей этот круг, учитывая, что L = π·D, S = π·D2/4. В качестве значения π использовать 3.14.
program Begin15; const pi = 3.14; var L, S, D: real; begin write('Введите площадь окружности: '); read(S); D := sqrt(4 * S / pi); L := D * pi; writeln('Длина круга -- ', L:5:2); writeln('Диаметр круга -- ', D:5:2); end.
Begin16. Найти расстояние между двумя точками с заданными координатами x1 и x2 на числовой оси: |x2 – x1|.
На самом деле непонятно, почему именно х2-х1. Ведь число в модуле будет одинаковым. Что 8 — 9, что 9 -8 равняются единице.
program Begin16; const pi = 3.14; var X1, X2, Rast: real; begin write('Введите координаты двух точек на оси x: '); read(X1, X2); Rast := abs(X2 - X1); writeln('Расстояние между двумя точками -- ', Rast:5:2); end.
Begin17. Даны три точки A, B, C на числовой оси. Найти длины отрезков AC и BC и их сумму.
Иногда, если не понимаешь условие задачи, полезно составить рисунок к задаче.
program Begin17; var X1, X2, X3: real; begin write('Введите координаты трех точек на оси x: '); read(X1, X2, X3); writeln('AC = ', abs(X3-X1)); writeln('BC = ', abs(X3-X2)); writeln('AC + BC = ', abs(X3-X1)+ abs(X3-X2)); end.
Begin18. Даны три точки A, B, C на числовой оси. Точка C расположена между точками A и B. Найти произведение длин отрезков AC и BC.
Посмотрев на рисунок, мы понимаем, что нахождение длины отрезков не меняется. Кстати, попробуйте составить эту программу, используя только три переменных!
program Begin18; var X1, X2, X3: real; begin write('Введите координаты трех точек A, B, C : '); read(X1, X2, X3); writeln('AC = ', abs(X3-X1)); writeln('BC = ', abs(X3-X2)); writeln('AC * BC = ', abs(X3-X1)* abs(X3-X2)); end.
Begin19.Даны координаты двух противоположных вершин прямоугольника: (x1, y1), (x2, y2). Стороны прямоугольника параллельны осям координат. Найти периметр и площадь данного прямоугольника.
Для того, чтобы наглядно увидеть что от нас требуется, составим такой прямоугольник на листе бумаге. И увидим, что на что надо умножать.
program Begin19; var X1, X2, Y1, Y2, P, S, a, b: real; begin write('Введите координаты двух точек х1 у1 х2 у2 : '); read(X1, Y1, X2, Y2); a := abs(X2 - X1); b := abs(Y2 - Y1); P := 2 * (a + b); S := a * b; writeln('Периметр прямоугольника -- ', P:5:2); writeln('Площадь прямоугольника -- ', S:5:2); end.
Begin20. Найти расстояние между двумя точками с заданными координатами (x1, y1) и (x2, y2) на плоскости.
Расстояние вычисляется по формуле √(x2 — x1)2+(y2 — y1)2.
program Begin20; var a, x1, x2, y1, y2: real; begin write('Введите x1, y1: '); readln(x1, y1); write('Введите x2, y2: '); readln(x2, y2); a := sqrt(sqr(x2 - x1) + sqr(y2 - y1)); writeln('Расстояние между точками -- ', a:5:2); end.
На сегодня все. С Новым Годом!
Поиграем? Кто поймает кота? 🙂