nextupprevious
Next:3.2.2 Максимум из трех
Up:3.2 Построение ветвящихся программ
Previous:3.2 Построение ветвящихся программ


3.2.1 Точка в треугольнике

Задача. Для точки на плоскости с заданными координатами $х,y$ определить, лежит ли она внутри треугольника с вершинами в точках (0,0), (0,2) и (2,0).

Решение. Точка лежит внутри треугольника, если она расположена правее прямой x$х = 0$, выше прямой y$у = 0$ и ниже прямой x+y=2. Таким образом, принадлежность точки с координатами (x,y) нашему треугольнику определяется истинностью логического выражения

$(x > 0)\vee (y > 0)\vee (x + y < 2)$.

Поэтому наше решение будет содержать ровно один условный оператор:

module ПроверкаРасположенияТочки;
    const НУЛЬ = 0;
    var X,Y : Real;
begin
    read(X,Y);
    writeLn ('Точка с координатами (',X, ', ', Y, ') ');
    if (X > НУЛЬ) & (Y > НУЛЬ )& (X + Y< 2)
    then write (' принадлежит ')
    else write (' не принадлежит ')
    end;
    writeln (' треугольнику.')
end ПроверкаРасположенияТочки.

Очевидно, что условные операторы

if A then B else C end и

if not A then C else B end

при любых логических выражениях $А$ и любых операторах $В, С$ эквивалентны, т.е. дают один и тот же эффект. Заметим, далее, что эквивалентны также выражения

~((X $>$ НУЛЬ )&(Y $>$ НУЛЬ ) &(X+Y $<$ 2)) и (X $<$= НУЛЬ) or (Y $<$= НУЛЬ) or (X+Y $>$ = 2).

Поэтому печать ответа можно записать чуть короче:

module ПроверкаРасположенияТочки2;
    const НУЛЬ = 0;
    var X,Y : Real;
begin
    read(X,Y);
    writeln ('Точка с координатами (',X, ', ', Y, ') ');
    if (X <= НУЛЬ ) or (Y <= НУЛЬ ) or (X+Y > = 2)
    then write (' не ')
    end;
    writeln (' принадлежит треугольнику.')
end ПроверкаРасположенияТочки2.
 

Next:3.2.2 Максимум из трех
Up:3.2 Построение ветвящихся программ
Previous:3.2 Построение ветвящихся программ



© В.Н. Касьянов, Е.В.Касьянова, 2004