IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Проверка на образование фигур, Геометрическая задачка
Relrin
сообщение 16.12.2010 13:50
Сообщение #1


Пионер
**

Группа: Пользователи
Сообщений: 64
Пол: Мужской

Репутация: -  0  +


Даны координаты точек (x1,y1), (x1,y1), (x1,y1), (x1,y1). Определить, образуют ли они: а) ромб; б) трапецию; в) квадрат.

Мое решение, только не могу понять почему ошибку выдает после указания координат (например, квадрат, координаты которого (1,1),(1,4),(4,4),(4,1)). Походу ошибка там где идут подсчеты от ln9 до ln12 (это подсчеты для сторон трапеции). Как тогда изменить условия, чтобы не изменить ход решения:

Uses
Crt;

Const
eps=0.0001;

Var
x1,x2,x3,x4: integer;
y1,y2,y3,y4: integer;
ln1,ln2,ln3,ln4,dg1,dg2: double;
ln5,ln6,ln7,ln8,dg3,dg4: double;
ln9,ln10,ln11,ln12: double;
res: integer;

Begin
clrscr;
res:=4;
{Ввод координат}
writeln('Enter coordinats point M1(x1,y1): ');
readln(x1,y1);
writeln('Enter coordinats point M2(x2,y2): ');
readln(x2,y2);
writeln('Enter coordinats point M3(x3,y3): ');
readln(x3,y3);
writeln('Enter coordinats point M4(x4,y4): ');
readln(x4,y4);
{Подсчеты сторон и диагоналей}
ln1:=sqrt(sqr(x2-x1)+sqr(y2-y1)); {сторона 1-2}
ln2:=sqrt(sqr(x3-x2)+sqr(y3-y2)); {сторона 2-3}
ln3:=sqrt(sqr(x4-x3)+sqr(y4-y3)); {сторона 3-4}
ln4:=sqrt(sqr(x4-x1)+sqr(y4-y1)); {сторона 4-1}
dg1:=sqrt(sqr(x3-x1)+sqr(y3-y1)); {диагональ 1-3}
dg2:=sqrt(sqr(x4-x2)+sqr(y4-y2)); {диагональ 2-4}

ln5:=sqrt(sqr(x3-x1)+sqr(y3-y1)); {сторона 1-3}
ln6:=sqrt(sqr(x3-x2)+sqr(y3-y2)); {сторона 2-3}
ln7:=sqrt(sqr(x4-x2)+sqr(y4-y2)); {сторона 2-4}
ln8:=sqrt(sqr(x4-x1)+sqr(y4-y1)); {сторона 4-1}
dg3:=sqrt(sqr(x2-x1)+sqr(y2-y1)); {диагональ 1-2}
dg4:=sqrt(sqr(x4-x3)+sqr(y4-y3)); {диагональ 3-4}

ln9 :=abs((x1-x2)/(x3-x4)-(y1-y2)/(y3-y4));
ln10:=abs((x2-x3)/(x1-x4)-(y2-y3)/(y1-y4));
ln11:=abs((x2-x3)/(x1-x4)-(y2-y3)/(y1-y4));
ln12:=abs((x1-x2)/(x3-x4)-(y1-y2)/(y3-y4));
{Проверка на то, что образуют точки}
if (y1<>y2) and (y1<>y3) and (y1<>y4) and (y2<>y3)
and (y2<>y4) and (y3<>y4) then
begin
{Проверка на ромб}
if (((ln1=ln2) and (ln1=ln3) and (ln1=ln4)
and (ln2=ln3) and (ln2=ln4) and (ln3=ln4))
or ((ln5=ln6) and (ln5=ln7) and (ln5=ln8)
and (ln6=ln7) and (ln6=ln8) and (ln7=ln8)))
and ((dg1<>dg2) or (dg3<>dg4)) then res:=1;
{Проверка на трапецию}
if ((ln9<eps) and (ln10>eps)) or
((ln11<eps) and (ln12>eps)) then res:=2;
{Проверка на квадрат}
if (((ln1=ln2) and (ln1=ln3) and (ln1=ln4)
and (ln2=ln3) and (ln2=ln4) and (ln3=ln4))
or ((ln5=ln6) and (ln5=ln7) and (ln5=ln8)
and (ln6=ln7) and (ln6=ln8) and (ln7=ln8)))
and ((dg1=dg2) or (dg3=dg4)) then res:=3;
end;
{Вывод}
case res of
1: writeln('These points create form a rhombus');
2: writeln('These points create form a trapeze');
3: writeln('These points create form a square');
4: writeln('These points not create some form');
end;
readkey;
End.




Сообщение отредактировано: Relrin - 16.12.2010 13:58
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 18.07.2025 10:01
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"