profile
Размещено 4 года назад по предмету Информатика от DaHul

Даны числа x1,y,x2,y2,x3,y3.Определите
лежит ли точка (x1,y1) внутри или вне прямоугольника,
стороны которого паралельны осям кординат,а противолежащие
вершины имеют координаты (x2,y2,) и (x3,y3)

  1. Ответ на вопрос
    Ответ на вопрос дан nelle987
    Заметим, что точка лежит внутри прямоугольника, если min(x2, x3) < x1 < max(x2, x3) и min(y2, y3) < y1 < max(y2, y3) (см. рисунок).
    Поэтому поступим так: сначала переставим x2 и x3, чтобы x2 стало меньше x3, потом повторим с y2 и y3, чтобы было y2 < y3. Затем можно проверять, что x2 < x1 < x3 и y2 < y1 < y3.
    Точка попадёт на границу, если x1 = x2 или x3, а y1 = y2 или y3. Если оба условия не выполнены, то точка лежит вне прямоугольника.
    Код (Паскаль):
    var
      x1, y1, x2, y2, x3, y3, temp: real;

    begin
      write('Координаты точки: '); readln(x1, y1);
      write('Координаты первой вершины: '); readln(x2, y2);
      write('Координаты второй вершины: '); readln(x3, y3);
      if x2 > x3 then begin
        temp := x2; x2 := x3; x3 := temp;
      end;
      if y2 > y3 then begin
        temp := y2; y2 := y3; y3 := temp;
      end;

      if (x2 < x1) and (x1 < x3) and (y2 < y1) and (y1 < y3) then
        writeln('Точка внутри прямоугольника')
      else if ((x1 = x2) or (x1 = x3)) and ((y1 = y2) or (y1 = y3)) then
        writeln('Точка на границе прямоугольника')
      else
        writeln('Точка вне прямоугольника');
    end.


    Можно заменить проверки на такие: если min(x2, x3) < x1 < max(x2, x3), то среди разностей x1 - x2 и x1 - x3 одна положительная, а другая отрицательная. Тогда (x1 - x2)(x1 - x3) < 0. Следовательно, можно проверить только, что  (x1 - x2)(x1 - x3) < 0 и (y1 - y2)(y1 - y3) < 0. В случае, когда точка лежит на границе, оба произведения равны нулю.
    В моей программе произведения записаны в переменные x1 и y1.
    Код (Паскаль):
    var
      x1, y1, x2, y2, x3, y3: real;

    begin
      write('Координаты точки: '); readln(x1, y1);
      write('Координаты первой вершины: '); readln(x2, y2);
      write('Координаты второй вершины: '); readln(x3, y3);
      x1 := (x1 - x2) * (x1 - x3);
      y1 := (y1 - y2) * (y1 - y3);

      if (x1 < 0) and (y1 < 0) then
        writeln('Точка внутри прямоугольника')
      else if (x1 = 0) and (y1 = 0) then
        writeln('Точка на границе прямоугольника')
      else
        writeln('Точка вне прямоугольника');
    end.
Не тот ответ на вопрос, который вам нужен?
Найди верный ответ
Самые новые вопросы
tegysigalpa2012
Русский язык - 5 лет назад

Помогите решить тест по русскому языку тест по русскому языку «местоимение. разряды местоимений» для 6 класса 1. укажите личное местоимение: 1) некто 2) вас 3) ни с кем 4) собой 2. укажите относительное местоимение: 1) кто-либо 2) некоторый 3) кто 4) нам 3. укажите вопросительное местоимение: 1) кем-нибудь 2) кем 3) себе 4) никакой 4. укажите определительное местоимение: 1) наш 2) который 3) некий 4) каждый 5. укажите возвратное местоимение: 1) свой 2) чей 3) сам 4) себя 6. найдите указательное местоимение: 1) твой 2) какой 3) тот 4) их 7. найдите притяжательное местоимение: 1) самый 2) моего 3) иной 4) ничей 8. укажите неопределённое местоимение: 1) весь 2) какой-нибудь 3) любой 4) этот 9. укажите вопросительное местоимение: 1) сколько 2) кое-что 3) она 4) нами 10. в каком варианте ответа выделенное слово является притяжательным местоимением? 1) увидел их 2) её нет дома 3) её тетрадь 4) их не спросили

Информация

Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.