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

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

WinCity.Ru _ Программирование _ Задачка на Паскале.

Автор: Fomik Воскресенье, 02 Марта 2008, 15:40

вот задачки:
с клавиатуры вводится целое число n. Напишите программу, которая рисует с помощью * р\б треугольник с основанием и ребром, равным n.
Уважаемые программисты, решение нужно срочно. Пользоваться можно только условным оператором, циклом For, логическими операциями.
и ещё:
даны координаты четырёх точек A, B, C, D на коодинатной прямой. Не применяя циклов, определите длину пересечения отрезков AB и CD. Если отрезки не пересекаются, выведети ноль.

Добавлено Fomik, [mergetime]1204461541[/mergetime]
второую задачку я так решить и не смог.

Добавлено Fomik, [mergetime]1204461655[/mergetime]
ах, да чуть, не забыл.
типы переменных только Integer, boolean, и никаких массивов.

Автор: shplint Воскресенье, 02 Марта 2008, 19:29

вторая задача решается так:
1. координаты векторов АВ{Xb-Xa;Yb-Ya}, CD{Xd-Xc;Yd-Yc}
2. Условие коллинеарности векторов: если (Xb-Xa)/(Xd-Xc)<>(Yb-Ya)/(Yd-Yc) то твои отрезки пересекаются
3. Сравниваешь длины отрезков, к примеру |AB|<|CD|->(AB)э(CD) и длина пересечения равна |AB|

Автор: Квазимодо Понедельник, 03 Марта 2008, 11:45

Кстати, малость уточним: на координатной прямой или плоскости? Если прямой, то векторы AB и CD всегда коллинеарны, а алгоритм можно придумать что-то вроде этого:
1. Определим, какой из отрезков меньше по длине (AB или CD).
Допустим, выяснилось, что AB, и при этом x(A)<=x(B), x(С)<=x(D) (x(Y) - координата точки Y). Тогда
2. определим, попадают ли точки A и B внутрь отрезка CD.
3. Если не попадает ни одна, отрезки не пересекаются.
4. Если А не попадает, а B попадает, то отрезок пересечения - CB.
5. Если A попадает, а B нет, то отрезок пересечения - AD.
6. Если и А, и B попали, то весь отрезок AB находится внутри отрезка CD.
Если же точки A,B,C,D на плоскости (а не на прямой), то shplint несколько упростил: речь ведь о пересечени отрезков, а не прямых, т.е. найденная точка пересечения еще должна попасть внутрь каждого отрезка.

Автор: Fomik Вторник, 04 Марта 2008, 13:11

Люди, я что уже не пробовал делать, как решать вообще не знаю. Насчёт коллинеарности векторов мне ничего не говорите (мои знания на уроване 8 класса) поэтому не могли бы вы решить эти задачки. Мне скоро отправлять их решения, для меня каждый день дорог. Во первой задаче понятно, что надо использовать цикл, я дошёл до того, что у меня рисуется квадрат, как же теперь по диагонали отсечь, что у меня рисовался пу треугольник? а потом уже каждую звёздочку сдвинуть несколько вправо. Весь смысл задачи приходится на рисовании вот чего:
*
* *
* * *
* * * *
* * * * *
* * * * * *
что-то толком не рисуется здесь. это вторая стадия задачи. как её получить?

Автор: Админ Вторник, 04 Марта 2008, 15:00

Квазимодо, shplint, Зачем все так сложно, какие вектора. Ясно же сказано, то

Цитата(Fomik @ Воскресенье, 02 Марта 2008, 16:40)
даны координаты четырёх точек A, B, C, D на коодинатной прямой.
На ПРЯМОЙ, т.е. точка А - начало первого отрезка, точка B - конец первого отрезка. Точка C- начало второго отрезка, точка D - конец второго отрезка. Отрезки расположены на одной прямой.

Автор: shplint Вторник, 04 Марта 2008, 20:41

Админ, на всякий случай если ты забыл, то расстояние скажем от точки а до точки В есть вектора|AB|.

Автор: Барэль Вторник, 04 Марта 2008, 21:33

shplint,

Цитата(shplint @ Сегодня, 21:41)
на всякий случай если ты забыл

расстояние скажем от точки А до точки В есть ОТРЕЗОК

http://ru.wikipedia.org/wiki/%D0%92%D0%B5%D0%BA%D1%82%D0%BE%D1%80_%28%D0%B3%D0%B5%D0%BE%D0%BC%D0%B5%D1%82%D1%80%D0%B8%D1%8F%29
http://ru.wikipedia.org/wiki/%D0%9E%D1%82%D1%80%D0%B5%D0%B7%D0%BE%D0%BA

Автор: shplint Среда, 05 Марта 2008, 10:41

длинна которого равна модулю вектора АВ, а эти ссылочки мог бы и не писать, вектора я знаю хорошо и вообще с математикой у мееня нет проблем в отличе от некоторых...

Автор: Админ Среда, 05 Марта 2008, 12:46

shplint, увижу еще один пост в этой теме про твои математические способности - забаню.
В контексте рассматриваемой задачи, понятием "отрезок" оперировать легче, так что не грузи человека лишней информацией. Блистать своими знаниями геометрических терминов нужно тогда, когда от них есть толк. А от твоих знаний пока прока здесь не видно, только путаницу создаешь со своей коллинеарностью и прочими выкладками в элементарной задаче.

Автор: Fomik Среда, 05 Марта 2008, 14:14

я додумался до того, что надо рассмотреть все варианты расположения точек, а их 24!

Автор: Квазимодо Среда, 05 Марта 2008, 15:06

Fomik, по-моему, не обязательно. Достаточно сделать так: для отрезка AB определить целочисленные переменные x1, x2 (координаты точек, при этом x1<x2, т.е. либо x1:=x( A ), x2:=x( B ), либо наоборот; x1 - самая левая точка отрезка AB, если считать, что координатная ось идет слева направо) и булевую Flag12 (если координата точки A меньше, чем B, то True, иначе False). Аналогично, для отрезка CD вводим переменные x3, x4 (x3<x4) и Flag34. А дальше проверяем попадание координат x1 и x2 в промежуток между x3 и x4 (если (x1-x3)*(x1-x4)<=0, то эта точка попадает на отрезок CD, иначе нет; аналогично для x2), т.е. алгоритм такой, какой приведен в моем предыдущем сообщении.

Автор: shplint Среда, 05 Марта 2008, 23:23

Админ, я по-моему тебе уже говорил что мне пофигу на твои угрозу, я выражаю свои мысли и мне пофиг че тебя не устраивает, understand

Добавлено, Админ:
2 shplint:
Мишенька, я тебе не угрожаю, я тебя предупреждаю и предостерегаю от высказываний, нарушаюших правила общения на форуме и в этом топике в частности. Меня не устраивают не содержание твоих мыслей (об этом у меня уже давно сложилось однозначное мнение), а та форма в которой ты их пытаешься тут излить. И так как повлиять на первое я не в силах (на и не помогло бы), то со вторым я могу (и должен) бороться. Поэтому, извини, но тебе придется помолчать здесь несколько дней. Можешь подумать над своим поведением или же сидеть и раздуваться от осознания независимости собственного мнения, мне все-равно. Но если снова будут появляться твои высказывания в подобной форме или с содержанием, нарушающим Правила форума - придется закрыть тебе доступ сюда. И ничего личного...

Автор: Барэль Среда, 05 Марта 2008, 23:52

shplint, 5 дней read only.

Цитата(shplint @ Сегодня, 0:23)
understand

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)