If20. На числовой оси расположены три точки: A, B, C. Определить, какая из двух последних точек (B или C) расположена ближе к A, и вывести эту точку и ее расстояние от точки A.
var
XA, XB, XC, d: real;
begin
writeln('Введите координаты X трех точек: ');
write(' XA = ');
readln(XA);
write(' XB = ');
readln(XB);
write(' XC = ');
readln(XC);
write('Ближе к A расположена точка');
if abs(XB - XA) < abs(XC - XA) then
begin
d := abs(XB - XA); { <== Расстояние от В к А }
writeln(' B.')
end
else
begin
d := abs(XC - XA); { <== Расстояние от С к А }
writeln(' C.')
end;
writeln('Расстояние: ', d);
readln
end.
**type** real;
: Представляет число двойной точности с плавающей запятой.Размер: 8 байт Количество значащих цифр: 15 - 16 Диапазон значений: -1.8∙10308 .. 1.8∙10308**function** Abs(x: real): real;
: Возвращает модуль числа x.**function** Abs(x: real): real;
: Возвращает модуль числа x.**function** Abs(x: real): real;
: Возвращает модуль числа x.**function** Abs(x: real): real;
: Возвращает модуль числа x. Наверное, более правильным было бы сначала вычислить расстояния АВ и АС, а после их сравнивать:
var
XA, XB, XC, AB, AC: real;
begin
writeln('Введите координаты точек А, В и С:');
write(' XA = ');
readln(XA);
write(' XB = ');
readln(XB);
write(' XC = ');
readln(XC);
AB := abs(XB - XA); { <== Расстояние от А до В }
AC := abs(XC - XA); { <== Расстояние от А до С }
if AB < AC then
writeln('Ближе к A расположена точка B. Расстояние: ', AB)
else
if AB > AC then
writeln('Ближе к A расположена точка C. Расстояние: ', AC)
else
writeln('В и С находятся от А на одинаковом расстоянии ', AB);
readln
end.
**type** real;
: Представляет число двойной точности с плавающей запятой.Размер: 8 байт Количество значащих цифр: 15 - 16 Диапазон значений: -1.8∙10308 .. 1.8∙10308**function** Abs(x: real): real;
: Возвращает модуль числа x.**function** Abs(x: real): real;
: Возвращает модуль числа x. If21. Даны целочисленные координаты точки на плоскости. Если точка совпадает с началом координат, то вывести 0. Если точка не совпадает с началом координат, но лежит на оси OX или OY, то вывести соответственно 1 или 2. Если точка не лежит на координатных осях, то вывести 3.
var
X, Y: integer;
begin
writeln('Введите координату X:');
readln(X);
writeln('Введите координату Y:');
readln(Y);
writeln;
if (X = 0) and (Y = 0) then writeln(0)
else
if (X <> 0) and (Y = 0) then writeln(1)
else
if (Y <> 0) and (X = 0) then writeln(2)
else writeln(3);
readln
end.
**type** integer;
: Представляет 32-битовое целое число со знаком.Диапазон значений: -2 147 483 648 .. 2 147 483 647 * * *
Второй вариант решения задачи if21:
var
X, Y: integer;
begin
write('X = ');
readln(X);
write('Y = ');
readln(Y);
writeln;
if X = 0 then
if Y = 0 then writeln(0) { Начало координат: x=0, y=0 }
else writeln(2) { Лежит на оси OY: x=0, y≠0 }
else
if Y = 0 then writeln(1) { Лежит на оси OX: x≠0, y=0 }
else writeln(3); { Не лежит на осях: x≠0, y≠0 }
readln
end.
**type** integer;
: Представляет 32-битовое целое число со знаком.Диапазон значений: -2 147 483 648 .. 2 147 483 647 If22. Даны координаты точки, не лежащей на координатных осях OX и OY. Определить номер координатной четверти, в которой находится данная точка.
var
X, Y: integer;
begin
write('X = ');
readln(X);
write('Y = ');
readln(Y);
writeln;
if (X = 0) or (Y = 0) then
writeln('Вы ошиблись при вводе координат!')
else
if (X > 0)and(Y > 0) then writeln('1-я четверть')
else
if (X < 0)and(Y > 0) then writeln('2-я четверть')
else
if (X < 0)and(Y < 0) then writeln('3-я четверть')
else writeln('4-я четверть');
readln
end.
**type** integer;
: Представляет 32-битовое целое число со знаком.Диапазон значений: -2 147 483 648 .. 2 147 483 647 * * *
Второй вариант решения задачи if22 более правильный:
var
X, Y: integer;
begin
write('Введите координату X: ');
readln(X);
write('Введите координату Y: ');
readln(Y);
if (X = 0) or (Y = 0) then
writeln('Вы ошиблись при вводе координат!')
else
if X > 0 then
if Y > 0 then writeln('1-я четверть')
else writeln('4-я четверть')
else
if Y > 0 then writeln('2-я четверть')
else writeln('3-я четверть');
readln
end.
**type** integer;
: Представляет 32-битовое целое число со знаком.Диапазон значений: -2 147 483 648 .. 2 147 483 647 If23. Даны целочисленные координаты трех вершин прямоугольника, стороны которого параллельны координатным осям. Найти координаты его четвертой вершины.
var
x1, x2, x3, y1, y2, y3: integer;
begin
writeln('Вводим координаты первой вершины:');
write(' x1 = ');
readln(x1);
write(' y1 = ');
readln(y1);
writeln('Вводим координаты второй вершины:');
write(' x2 = ');
readln(x2);
write(' y2 = ');
readln(y2);
writeln('Вводим координаты третьей вершины:');
write(' x3 = ');
readln(x3);
write(' y3 = ');
readln(y3);
writeln('Результат');
if (x1 = x2) and (x1 <> x3) then
if (y1 <> y2) then
if y1 = y3 then writeln(' x4 = ', x3, ', y4 = ', y2)
else
if y2 = y3 then writeln(' x4 = ', x3, ', y4 = ', y1)
else writeln('Ошибка ввода!')
else writeln('Ошибка ввода!')
else
if (x1 = x3) and (x1 <> x2) then
if y1 <> y3 then
if y1 = y2 then writeln(' x4 = ', x2, ', y4 = ', y3)
else
if y2 = y3 then writeln(' x4 = ', x2, ', y4 = ', y1)
else writeln('Ошибка ввода!')
else writeln('Ошибка ввода!')
else
if (x2 = x3) and (x2 <> x1) then
if y2 <> y3 then
if y1 = y2 then writeln(' x4 = ', x1, ', y4 = ', y3)
else
if y1 = y3 then writeln(' x4 = ', x1, ', y4 = ', y2)
else writeln('Ошибка ввода!')
else writeln('Ошибка ввода!')
else writeln('Ошибка ввода!');
readln
end.
**type** integer;
: Представляет 32-битовое целое число со знаком.Диапазон значений: -2 147 483 648 .. 2 147 483 647 * * *
Второй вариант задачи If23:
var
x1, x2, x3, x4, y1, y2, y3, y4: integer;
f: boolean; { <-- индикатор существования прямоугольника:
True - существует, False - не существует }
begin
writeln('Вводим координаты x1, y1:');
readln(x1, y1);
writeln('Вводим координаты x2, y2:');
readln(x2, y2);
writeln('Вводим координаты x3, y3:');
readln(x3, y3);
writeln('Результат:');
f := true;
{ Проверяем абсциссы вершин: }
if (x1 = x2)and(x3 <> x2) then x4 := x3
else
if (x1 = x3)and(x2 <> x1) then x4 := x2
else
if (x2 = x3)and(x1 <> x3) then x4 := x1
else f := false;
{ Проверяем ординаты вершин: }
if f = true then
if (y1 = y2)and(y3 <> y2) then y4 := y3
else
if (y1 = y3)and(y2 <> y1) then y4 := y2
else
if (y2 = y3)and(y1 <> y3) then y4 := y1
else f := false;
{ Выводим результат: }
if f = true then writeln(' (x4,y4) = (', x4, ',', y4, ')')
else writeln('Такого прямоугольника не существует');
readln
end.
**type** integer;
: Представляет 32-битовое целое число со знаком.Диапазон значений: -2 147 483 648 .. 2 147 483 647**type** boolean;
: Представляет логическое значение.**const** true = True;
: Представляет логическое значение.**const** false = False;
: Представляет логическое значение.**const** true = True;
: Представляет логическое значение.**const** false = False;
: Представляет логическое значение.**const** true = True;
: Представляет логическое значение. * * *
Третий вариант задачи If23 наиболее простой:
var
x1, x2, x3, y1, y2, y3, x4, y4: integer;
begin
writeln('Вводим x1, y1:');
readln(x1, y1);
writeln('Вводим x2, y2:');
readln(x2, y2);
writeln('Вводим x3, y3:');
readln(x3, y3);
writeln;
if x1 = x2 then begin
x4 := x3;
if y1 = y3 then y4 := y2
else y4 := y1
end
else
if x1 = x3 then begin
x4 := x2;
if y1 = y2 then y4 := y3
else y4 := y1
end
else begin
x4 := x1;
if y1 = y2 then y4 := y3
else y4 := y2
end;
writeln('x4 = ', x4, ' y4 = ', y4);
readln
end.
**type** integer;
: Представляет 32-битовое целое число со знаком.Диапазон значений: -2 147 483 648 .. 2 147 483 647