Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Теоретические вопросы _ Помогите с решением

Автор: Clane 28.10.2002 22:01

1. Найдите координаты всех седловых точек в матрице 10х10.
Седловой точкой называется элемент матрицы, максимальный в своем
столбце и минимальный в своей строке.
2. Задан выпуклый n-угольник (координатами своих вершин)
и точка А(x;y). Определить принадлежит ли эта точка многоугольнику.

Автор: AlaRic 28.10.2002 23:49

К какому числу?

Автор: Clane 29.10.2002 10:11

Просьбу решить задачи мне присалали на e-mail. Я решил выенсти эту проблему на форум.

Автор: Romario 29.10.2002 21:15

Гы, это пока для меня далеко ??? :-[ :-/

Автор: pascal65536 30.10.2002 16:56

Я делал подобную задачу (принадлежность точки треугольнику) посмотри на pascal.hop.ru

Автор: mj 30.10.2002 23:20

Дан набор точек, надо по ним построить выпуклый многоугольник и разделить так чтобы две получившиеся части были как можно одинаковее.
Криво написано, но это олимпиадная задачка...

Автор: big 1.11.2002 22:36

А куда можно отправить программу к первой задаче?

Автор: Clane 1.11.2002 23:25

Или на clane@newmail.ru, или просто в форуме оставь..

Автор: Ivs 5.11.2002 1:51

во второй задаче нужно обходить n - угольник и проверять на то что бы точка постоянно лежала справа от внешней стороны. Есть такая же задача только с треугольником.

Автор: mj 5.11.2002 4:58

Цитата
во второй задаче нужно обходить n - угольник и проверять на то что бы точка постоянно лежала справа от внешней стороны. Есть такая же задача только с треугольником.

Ну это первое что приходит в голову.
Условие задачи допускает наличие точек внутри многоугольника и через все внутренние точки должна проходить граница участка, а в этом и загвоздка.

Кстати эта олимпиадная задачка 4 или 5 республиканской олимпиады среди школьников Башкирии.

Автор: mj 5.11.2002 5:03

Открою вам секретик.
Я занял все первые места по всем наминациям на городской, а потом и республиканской олимпиаде в 2000 году среди студентов техникумов и колледжей Башкирии.

Автор: Ivs 5.11.2002 23:43

Clane скинь мне тесты на первую задачу.
Я её решил, вот занимаюсь отладкой.

Автор: Ivs 7.11.2002 2:25

Матрица блин слишком большая чтоб вводить 100 элементов вручную, поэтому у меня здесь 2 возможных варианта (вручную и randomize, но при randomize никогда эту седловую точку не получить(когда 10x10))
Вот исходник (должен работать):
program sedltoch;
const n=10;
var
   a:array[1..n,1..n] of integer;
   i,j,k,z,t,min,max:integer;
begin
  randomize;
  for i:=1 to n do
  begin
     for j:=1 to n do
     begin
       write('-> ');
       readln(a[i,j]);
       {a[i,j]:=random(9)+1;
       write(a[i,j]:4);}
     end;
     {writeln; }
  end;
  for i:=1 to n do
  begin
     min:=maxint;
     for j:=1 to n do
     begin
     if a[i,j]<min then
     begin
        min:=a[i,j];
        k:=j;
     end;
     end;
     max:=-32768;
      for z:=1 to n do
      begin
         if a[z,k]>max then
         begin
            max:=a[z,k];
            t:=z;
         end;
       end;
       if (min=max) then writeln('Седловая точка -> a[',t,',',k,']=',a[t,k]);
  end;
  readln;
end.

Автор: Dimka 22.11.2002 10:48

Ну, первая задачка тривиальна - про нее я даже говорить ничего не буду.
Вторая задачка встречается в лабораторных работах по Компьютерной графике 3 курса соответствующей специальности.
Если вершины многоугольника заданы в порядке обхода по периметру, то нужно строить векторы, описывающие стороны. Каждый такой вектор умножать на вектор точки. Смотреть на знак числа. Суть в том, что если обходить многоугольник по периметру, всегда знаешь, где внешная область, а где внутренняя (справа или слева), поэтому можно получить однозначное решение.
Мы, правда, решали эту задачку для невыпуклых многоугольников - их надо было разбивать на выпуклые - вот в этом то и проблема была.