Помогите соединить в одно целое. Есть 4 часа времени
Составить программу, которая использует модуль. В модуле разработать подпрограммы для работы с декартовой плоскостью: принадлежность точки прямой, отрезку, многоугольнику. И добавте, пожалуйста, принадлежность прямой
Составить программу, которая использует модуль. В модуле разработать подпрограммы для работы с декартовой плоскостью: принадлежность точки прямой, отрезку, многоугольнику. И добавте, пожалуйста, принадлежность прямой
Код:
[B][COLOR=black][FONT=Courier New]Program [/FONT][/COLOR][/B][COLOR=black][FONT=Courier New]geom3;[/FONT][/COLOR]
[B][COLOR=black][FONT=Courier New]Const [/FONT][/COLOR][/B][COLOR=black][FONT=Courier New]_Eps: [/FONT][/COLOR][COLOR=blue][FONT=Courier New]Real [/FONT][/COLOR][COLOR=black][FONT=Courier New]= [/FONT][/COLOR][COLOR=darkgreen][FONT=Courier New]1e-3[/FONT][/COLOR][COLOR=black][FONT=Courier New]; [/FONT][/COLOR][COLOR=green][FONT=Courier New]{точность вычислений}[/FONT][/COLOR]
[B][COLOR=black][FONT=Courier New]var [/FONT][/COLOR][/B][COLOR=black][FONT=Courier New]x1,y1,x2,y2,x,y:[/FONT][/COLOR][COLOR=blue][FONT=Courier New]real[/FONT][/COLOR][COLOR=black][FONT=Courier New];[/FONT][/COLOR]
[B][COLOR=black][FONT=Courier New]Function [/FONT][/COLOR][/B][COLOR=black][FONT=Courier New]RealEq([B]Const [/B]a, b:[/FONT][/COLOR][COLOR=blue][FONT=Courier New]Real[/FONT][/COLOR][COLOR=black][FONT=Courier New]):[/FONT][/COLOR][COLOR=blue][FONT=Courier New]Boolean[/FONT][/COLOR][COLOR=black][FONT=Courier New]; [/FONT][/COLOR][COLOR=green][FONT=Courier New]{[/FONT][/COLOR][COLOR=green][FONT=Courier New]строго[/FONT][/COLOR][COLOR=green][FONT=Courier New] [/FONT][/COLOR][COLOR=green][FONT=Courier New]равно[/FONT][/COLOR][COLOR=green][FONT=Courier New]}[/FONT][/COLOR]
[B][COLOR=black][FONT=Courier New]begin[/FONT][/COLOR][/B]
[B][COLOR=black][FONT=Courier New] [/FONT][/COLOR][/B][COLOR=black][FONT=Courier New]RealEq := Abs(a-b)<= _Eps[/FONT][/COLOR]
[B][COLOR=black][FONT=Courier New]End[/FONT][/COLOR][/B][COLOR=black][FONT=Courier New]; [/FONT][/COLOR][COLOR=green][FONT=Courier New]{RealEq}[/FONT][/COLOR]
[COLOR=green][FONT=Courier New] [/FONT][/COLOR]
[B][COLOR=black][FONT=Courier New]Function [/FONT][/COLOR][/B][COLOR=black][FONT=Courier New]RealMoreEq([B]Const [/B]a, b:[/FONT][/COLOR][COLOR=blue][FONT=Courier New]Real[/FONT][/COLOR][COLOR=black][FONT=Courier New]):[/FONT][/COLOR][COLOR=blue][FONT=Courier New]Boolean[/FONT][/COLOR][COLOR=black][FONT=Courier New]; [/FONT][/COLOR][COLOR=green][FONT=Courier New]{[/FONT][/COLOR][COLOR=green][FONT=Courier New]больше[/FONT][/COLOR][COLOR=green][FONT=Courier New] [/FONT][/COLOR][COLOR=green][FONT=Courier New]или[/FONT][/COLOR][COLOR=green][FONT=Courier New] [/FONT][/COLOR][COLOR=green][FONT=Courier New]равно[/FONT][/COLOR][COLOR=green][FONT=Courier New]}[/FONT][/COLOR]
[B][COLOR=black][FONT=Courier New]begin[/FONT][/COLOR][/B]
[B][COLOR=black][FONT=Courier New] [/FONT][/COLOR][/B][COLOR=black][FONT=Courier New]RealMoreEq := a - b >= _Eps[/FONT][/COLOR]
[B][COLOR=black][FONT=Courier New]End[/FONT][/COLOR][/B][COLOR=black][FONT=Courier New]; [/FONT][/COLOR][COLOR=green][FONT=Courier New]{RealMoreEq}[/FONT][/COLOR]
[COLOR=green][FONT=Courier New] [/FONT][/COLOR]
[B][COLOR=black][FONT=Courier New]Function [/FONT][/COLOR][/B][COLOR=black][FONT=Courier New]EqPoint(x1,y1,x2,y2:[/FONT][/COLOR][COLOR=blue][FONT=Courier New]real[/FONT][/COLOR][COLOR=black][FONT=Courier New]):[/FONT][/COLOR][COLOR=blue][FONT=Courier New]Boolean[/FONT][/COLOR][COLOR=black][FONT=Courier New];[/FONT][/COLOR]
[COLOR=green][FONT=Courier New]{Совпадают ли две точки на плоскости}[/FONT][/COLOR]
[B][COLOR=black][FONT=Courier New]begin[/FONT][/COLOR][/B]
[B][COLOR=black][FONT=Courier New] [/FONT][/COLOR][/B][COLOR=black][FONT=Courier New]EqPoint:=RealEq(x1,x2)[B]and [/B]RealEq(y1,y2)[/FONT][/COLOR]
[B][COLOR=black][FONT=Courier New]end[/FONT][/COLOR][/B][COLOR=black][FONT=Courier New]; [/FONT][/COLOR][COLOR=green][FONT=Courier New]{EqPoint}[/FONT][/COLOR]
[B][COLOR=black][FONT=Courier New]Function [/FONT][/COLOR][/B][COLOR=black][FONT=Courier New]AtOtres(x1,y1,x2,y2,x,y:[/FONT][/COLOR][COLOR=blue][FONT=Courier New]real[/FONT][/COLOR][COLOR=black][FONT=Courier New]):[/FONT][/COLOR][COLOR=blue][FONT=Courier New]Boolean[/FONT][/COLOR][COLOR=black][FONT=Courier New];[/FONT][/COLOR]
[COLOR=green][FONT=Courier New]{Проверка принадлежности точки P отрезку P1P2}[/FONT][/COLOR]
[B][COLOR=black][FONT=Courier New]Begin[/FONT][/COLOR][/B]
[B][COLOR=black][FONT=Courier New] If [/FONT][/COLOR][/B][COLOR=black][FONT=Courier New]EqPoint( x1,y1,x2,y2)[/FONT][/COLOR]
[COLOR=black][FONT=Courier New] [B]Then [/B]AtOtres:= EqPoint( x1,y1,x,y)[/FONT][/COLOR]
[COLOR=black][FONT=Courier New] [/FONT][/COLOR][COLOR=green][FONT=Courier New]{точки P1 и P2 совпадают, результат определяется совпадением точек P1 и P}[/FONT][/COLOR]
[B][COLOR=black][FONT=Courier New]Else[/FONT][/COLOR][/B]
[B][COLOR=black][FONT=Courier New] [/FONT][/COLOR][/B][COLOR=black][FONT=Courier New]AtOtres := RealEq((x-x1)*(y2-y1)- (y-y1)*(x2-x1),[/FONT][/COLOR][COLOR=darkgreen][FONT=Courier New]0[/FONT][/COLOR][COLOR=black][FONT=Courier New])[B]and [/B](RealMoreEq(x,x1)[B]and[/B][/FONT][/COLOR]
[B][COLOR=black][FONT=Courier New] [/FONT][/COLOR][/B][COLOR=black][FONT=Courier New]RealMoreEq( x2,x)[B]Or [/B]RealMoreEq(x,x2)[B]and [/B]RealMoreEq( x1,x))[/FONT][/COLOR]
[B][COLOR=black][FONT=Courier New]end[/FONT][/COLOR][/B][COLOR=black][FONT=Courier New]; [/FONT][/COLOR][COLOR=green][FONT=Courier New]{AtOtres}[/FONT][/COLOR]
[COLOR=green][FONT=Courier New] [/FONT][/COLOR]
[B][COLOR=black][FONT=Courier New]begin [/FONT][/COLOR][/B][COLOR=green][FONT=Courier New]{main}[/FONT][/COLOR]
[COLOR=green][FONT=Courier New] [/FONT][/COLOR][COLOR=black][FONT=Courier New]writeln([/FONT][/COLOR][COLOR=blue][FONT=Courier New]'[/FONT][/COLOR][COLOR=blue][FONT=Courier New]Введите[/FONT][/COLOR][COLOR=blue][FONT=Courier New] [/FONT][/COLOR][COLOR=blue][FONT=Courier New]координаты[/FONT][/COLOR][COLOR=blue][FONT=Courier New] [/FONT][/COLOR][COLOR=blue][FONT=Courier New]точек[/FONT][/COLOR][COLOR=blue][FONT=Courier New]: x1,y1,x2,y2,x,y'[/FONT][/COLOR][COLOR=black][FONT=Courier New]);[/FONT][/COLOR]
[COLOR=black][FONT=Courier New] readln( x1,y1,x2,y2,x,y);[/FONT][/COLOR]
[COLOR=black][FONT=Courier New] [B]if [/B]AtOtres(x1,y1,x2,y2,x,y)[/FONT][/COLOR]
[COLOR=black][FONT=Courier New] [B]then [/B]writeln([/FONT][/COLOR][COLOR=blue][FONT=Courier New]'[/FONT][/COLOR][COLOR=blue][FONT=Courier New]Да[/FONT][/COLOR][COLOR=blue][FONT=Courier New].'[/FONT][/COLOR][COLOR=black][FONT=Courier New])[/FONT][/COLOR]
[COLOR=black][FONT=Courier New] [B]else [/B]writeln([/FONT][/COLOR][COLOR=blue][FONT=Courier New]'[/FONT][/COLOR][COLOR=blue][FONT=Courier New]Нет[/FONT][/COLOR][COLOR=blue][FONT=Courier New].' [/FONT][/COLOR][COLOR=black][FONT=Courier New]);[/FONT][/COLOR]
[B][COLOR=black][FONT=Courier New]end[/FONT][/COLOR][/B][COLOR=black][FONT=Courier New]. [/FONT][/COLOR][COLOR=green][FONT=Courier New]{main}[/FONT][/COLOR]
[FONT=Courier New]program geom5;[/FONT]
[FONT=Courier New]Const n=9; {[/FONT][FONT=Courier New]Количество[/FONT][FONT=Courier New] [/FONT][FONT=Courier New]точек[/FONT][FONT=Courier New]+1}[/FONT]
[FONT=Courier New] [/FONT][FONT=Courier New]_Eps: Real=1e-4; {точность вычислений}[/FONT]
[FONT=Courier New]type b=record[/FONT]
[FONT=Courier New] x,y:real;[/FONT]
[FONT=Courier New] end;[/FONT]
[FONT=Courier New] myArray= array[1..n] of b;[/FONT]
[FONT=Courier New]var[/FONT]
[FONT=Courier New] input:text;[/FONT]
[FONT=Courier New] x,y:real;[/FONT]
[FONT=Courier New] i:integer;[/FONT]
[FONT=Courier New] a:myArray;[/FONT]
[FONT=Courier New] [/FONT]
[FONT=Courier New]procedure zapmas;[/FONT]
[FONT=Courier New]begin[/FONT]
[FONT=Courier New] assign(input,'input.pas');[/FONT]
[FONT=Courier New] reset(input);[/FONT]
[FONT=Courier New] for i:=1 to n-1 do[/FONT]
[FONT=Courier New] read(input, a[i].x,a[i].y);[/FONT]
[FONT=Courier New] readln(input, x,y);[/FONT]
[FONT=Courier New] close(input);[/FONT]
[FONT=Courier New]end;[/FONT]
[FONT=Courier New] [/FONT]
[FONT=Courier New]function RealLess(Const a, b: Real): Boolean; {[/FONT][FONT=Courier New]строго[/FONT][FONT=Courier New] [/FONT][FONT=Courier New]меньше[/FONT][FONT=Courier New]}[/FONT]
[FONT=Courier New]begin[/FONT]
[FONT=Courier New] RealLess := b-a> _Eps[/FONT]
[FONT=Courier New]end; {RealLess}[/FONT]
[FONT=Courier New] [/FONT]
[FONT=Courier New]function VektorMulti(ax,ay,bx,by:real): real;[/FONT]
[FONT=Courier New]{[/FONT][FONT=Courier New]Векторное[/FONT][FONT=Courier New] [/FONT][FONT=Courier New]произведение[/FONT][FONT=Courier New] [/FONT][FONT=Courier New]векторов[/FONT][FONT=Courier New]}[/FONT]
[FONT=Courier New]...[/FONT]
[FONT=Courier New]end;[/FONT]
[FONT=Courier New]Function LinesCross(x1,y1,x2,y2,x3,y3,x4,y4:real): boolean;[/FONT]
[FONT=Courier New]{[/FONT][FONT=Courier New]Пересекаются[/FONT][FONT=Courier New] [/FONT][FONT=Courier New]ли[/FONT][FONT=Courier New] [/FONT][FONT=Courier New]отрезки[/FONT][FONT=Courier New]?}[/FONT]
[FONT=Courier New]...[/FONT]
[FONT=Courier New]end;[/FONT]
[FONT=Courier New] [/FONT]
[FONT=Courier New]function InsidePoint(a:myArray):Boolean;[/FONT]
[FONT=Courier New]{Проверка принадлежности точки многоугольнику}[/FONT]
[FONT=Courier New]var i,k,nom: integer;[/FONT]
[FONT=Courier New] [/FONT][FONT=Courier New]maxx:real;[/FONT]
[FONT=Courier New]begin[/FONT]
[FONT=Courier New] k:=0;[/FONT]
[FONT=Courier New] maxx:=a[1].x;[/FONT]
[FONT=Courier New] nom:=1;[/FONT]
[FONT=Courier New] for i:=2 to n-1 do[/FONT]
[FONT=Courier New] if maxx < a[i].x then begin maxx:=a[i].x;nom:=i;end;[/FONT]
[FONT=Courier New] a[n].x:=a[1].x; a[n].y:=a[1].y;[/FONT]
[FONT=Courier New] for i:=1 to n-1 do[/FONT]
[FONT=Courier New] if LinesCross(a[i].x,a[i].y,a[i+1].x,a[i+1].y,x,y,a[nom].x+1,a[nom].y)[/FONT]
[FONT=Courier New] then k:=k+1;[/FONT]
[FONT=Courier New] if k mod 2 <> 0[/FONT]
[FONT=Courier New] then InsidePoint:= true[/FONT]
[FONT=Courier New] else InsidePoint:= false;[/FONT]
[FONT=Courier New]end;[/FONT]
[FONT=Courier New] [/FONT]
[FONT=Courier New]begin {main}[/FONT]
[FONT=Courier New] zapMas;[/FONT]
[FONT=Courier New] if InsidePoint(a)[/FONT]
[FONT=Courier New] [/FONT][FONT=Courier New]then writeln('Точка внутри многоугольника.')[/FONT]
[FONT=Courier New] else writeln('Точка вне многоугольнка.)[/FONT]
[FONT=Courier New]end.[/FONT]