Root /ArchiveAbout
()

Координаты точек на оси и на плоскости

Координаты точек на оси и на плоскости

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