• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Помогите соединить в одно целое. Есть 4 часа времени

  • Автор темы Автор темы winowl
  • Дата начала Дата начала

winowl

Ученик
Регистрация
14 Янв 2015
Сообщения
4
Реакции
0
Баллы
0
Помогите соединить в одно целое. Есть 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]
 
Назад
Сверху