вот задачки:
с клавиатуры вводится целое число n. Напишите программу, которая рисует с помощью * р\б треугольник с основанием и ребром, равным n.
Уважаемые программисты, решение нужно срочно. Пользоваться можно только условным оператором, циклом For, логическими операциями.
и ещё:
даны координаты четырёх точек A, B, C, D на коодинатной прямой. Не применяя циклов, определите длину пересечения отрезков AB и CD. Если отрезки не пересекаются, выведети ноль.
Добавлено Fomik, [mergetime]1204461541[/mergetime]
второую задачку я так решить и не смог.
Добавлено Fomik, [mergetime]1204461655[/mergetime]
ах, да чуть, не забыл.
типы переменных только Integer, boolean, и никаких массивов.
вторая задача решается так:
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|
Кстати, малость уточним: на координатной прямой или плоскости? Если прямой, то векторы 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 несколько упростил: речь ведь о пересечени отрезков, а не прямых, т.е. найденная точка пересечения еще должна попасть внутрь каждого отрезка.
Люди, я что уже не пробовал делать, как решать вообще не знаю. Насчёт коллинеарности векторов мне ничего не говорите (мои знания на уроване 8 класса) поэтому не могли бы вы решить эти задачки. Мне скоро отправлять их решения, для меня каждый день дорог. Во первой задаче понятно, что надо использовать цикл, я дошёл до того, что у меня рисуется квадрат, как же теперь по диагонали отсечь, что у меня рисовался пу треугольник? а потом уже каждую звёздочку сдвинуть несколько вправо. Весь смысл задачи приходится на рисовании вот чего:
*
* *
* * *
* * * *
* * * * *
* * * * * *
что-то толком не рисуется здесь. это вторая стадия задачи. как её получить?
Квазимодо, shplint, Зачем все так сложно, какие вектора. Ясно же сказано, то
Админ, на всякий случай если ты забыл, то расстояние скажем от точки а до точки В есть вектора|AB|.
shplint,
длинна которого равна модулю вектора АВ, а эти ссылочки мог бы и не писать, вектора я знаю хорошо и вообще с математикой у мееня нет проблем в отличе от некоторых...
shplint, увижу еще один пост в этой теме про твои математические способности - забаню.
В контексте рассматриваемой задачи, понятием "отрезок" оперировать легче, так что не грузи человека лишней информацией. Блистать своими знаниями геометрических терминов нужно тогда, когда от них есть толк. А от твоих знаний пока прока здесь не видно, только путаницу создаешь со своей коллинеарностью и прочими выкладками в элементарной задаче.
я додумался до того, что надо рассмотреть все варианты расположения точек, а их 24!
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), т.е. алгоритм такой, какой приведен в моем предыдущем сообщении.
Админ, я по-моему тебе уже говорил что мне пофигу на твои угрозу, я выражаю свои мысли и мне пофиг че тебя не устраивает, understand
Добавлено, Админ:
2 shplint:
Мишенька, я тебе не угрожаю, я тебя предупреждаю и предостерегаю от высказываний, нарушаюших правила общения на форуме и в этом топике в частности. Меня не устраивают не содержание твоих мыслей (об этом у меня уже давно сложилось однозначное мнение), а та форма в которой ты их пытаешься тут излить. И так как повлиять на первое я не в силах (на и не помогло бы), то со вторым я могу (и должен) бороться. Поэтому, извини, но тебе придется помолчать здесь несколько дней. Можешь подумать над своим поведением или же сидеть и раздуваться от осознания независимости собственного мнения, мне все-равно. Но если снова будут появляться твои высказывания в подобной форме или с содержанием, нарушающим Правила форума - придется закрыть тебе доступ сюда. И ничего личного...
shplint, 5 дней read only.
Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)