19.03.2014, 00:58
|
|
Интересующийся
|
|
Регистрация: 18.03.2014
Сообщений: 29
|
|
Не правильный вывод данных.
Есть скрипт:
var X1, Y1, X2, Y2, X3, Y3, a, b, c, p, S,A, B, C, X0, Y0;
X1=prompt("X1","-2"); X1=parseInt(X1);
Y1=prompt("Y1","1"); Y1=parseInt(Y1);
X2=prompt("X2","2"); X2=parseInt(X2);
Y2=prompt("Y2","2"); Y2=parseInt(Y2);
X3=prompt("X3","1"); X3=parseInt(X3);
Y3=prompt("Y3","-2"); Y3=parseInt(Y3);
//Вывод координат точек
document.write("Координаты точек:<br>");
document.write('X1=<input type="text" size=2 disabled value="'+X1+'"><br>');
document.write('Y1=<input type="text" size=2 disabled value="'+Y1+'"><br>');
document.write('X2=<input type="text" size=2 disabled value="'+X2+'"><br>');
document.write('Y2=<input type="text" size=2 disabled value="'+Y3+'"><br>');
document.write('X3=<input type="text" size=2 disabled value="'+X3+'"><br>');
document.write('Y3=<input type="text" size=2 disabled value="'+Y3+'"><br>');
a=Math.sqrt(Math.pow((X2-X1),2)+Math.pow((Y2-Y1),2)); a=parseInt(a);//Длина первой стороны треугольника
b=Math.sqrt(Math.pow((X3-X2),2)+Math.pow((Y3-Y2),2)); b=parseInt(b);//Длина второй стороны треугольника
c=Math.sqrt(Math.pow((X1-X3),2)+Math.pow((Y1-Y3),2)); c=parseInt(c);//Длина треттьей стороны треугольника
document.write('Длины сторон AB, BC, CA: <input type="text" disabled value="'+a+', '+b+', '+c+'"><br>');
p=((a+b+c)/2); p=parseInt(p);//Полу-периметр треугольника
S=Math.sqrt(p*(p-a)*(p-b)*(p-c)); S=parseInt(S);//Площадь треугольника
//Проверка возможности построения и последуещие действия в случае возможности
document.write("Площадь треугольника:<br>");
if (a+b>c)//При этом условии построение возможно
document.write('<br>Площадь ABC = <input type="text" disabled value="'+S+'"><br>');
else
document.write('<input type="text" disabled value="Треугольник не существует"><br>');
//Определение типа треугольника
document.write("Тип треугольника:<br>");
if ((Math.pow(a,2)+Math.pow(b,2))==(Math.pow(c,2)))
document.write('<input type="text" size=50 disabled value="Треугольник прямоугольный"><br>');
else
if ((Math.pow(a,2)+Math.pow(b,2))>(Math.pow(c,2)))
document.write('<input type="text" size=50 disabled value="Треугольник тупоугольный"><br>');
else
if ((Math.pow(a,2)+Math.pow(b,2))<(Math.pow(c,2)))
document.write('<input type="text" size=50 disabled value="Треугольник остроугольный"><br>');
else
document.write('<input type="text" disabled value="Треугольник не существует"><br>');
X0=0; X0=parseInt(X0);
Y0=0; Y0=parseInt(Y0);
A=((X1-X0)*(Y2-Y1)-(X2-X1)*(Y1-Y0)); A=parseInt(A);
B=((X2-X0)*(Y3-Y2)-(X3-X2)*(Y2-Y0)); B=parseInt(B);
C=((X3-X0)*(Y1-Y3)-(X1-X3)*(Y3-Y0)); C=parseInt(C);
//Определение места расположения начала координат
document.write("Положение начала координат:<br>");
if ((A>0, B>0, C>0) || (A<0, B<0, C<0))
document.write("Координата (0,0) лежит в пределах треугольника");
else
if ((A==0, B>0, C>0) || (A>0, B==0, C>0) || (A>0, B>0, C==0) || (A==0, B<0, C<0) || (A<0, B==0, C<0) ||
(A<0, B<0, C==0) || (A==0, B<0, C>0) || (A==0, B>0, C<0) || (A<0, B==0, C>0) || (A>0, B==0, C<0) || (A<0, B>0, C==0) || (A>0, B<0, C==0))
document.write("Координата (0,0) лежит на одной из сторон треугольника");
else
document.write("Координата (0,0) не лежит в пределах треугольника");
1)Вывод информации: Координаты выводит правильно, а длины сторон только первое значение, почему?
2)Когда определяю тип треугольника, то когда ввожу координаты для прямоугольного, выводит, что треугольник тупоугольный?
3)При вводе явно не существующего треугольника(координаты находятся на одной прямой) выводит, что треугольник остроугольный?
4) Я уже не говорю про "Определение типа треугольника", там постоянно точка лежит в пределах треугольника!
P.S. Изучаю JavaScript около недели, поэтому извините за мой тупизм!
|
|
19.03.2014, 01:20
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,126
|
|
SnowyWolf,
интересно кто кроме вас будет проверять правильность формул ... странные только условия через запятую - что по вашему проверяет это условие
if ((A>0, B>0, C>0) || (A<0, B<0, C<0))
по моему что если C не равно нулю - а и b пофигу какие
Последний раз редактировалось рони, 19.03.2014 в 01:23.
|
|
19.03.2014, 01:29
|
|
Интересующийся
|
|
Регистрация: 18.03.2014
Сообщений: 29
|
|
При этом условии точка с данными координатами лежит в пределах треугольника. Ну, по крайней мере должно проверятся это условие. Может конечно не правильно оно задано, не знаю , искал ничего по этому поводу не нашел!
На счет формул. Они то правильные, проверено не раз(плюс в школе с геометрией дружил).
|
|
19.03.2014, 01:42
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,126
|
|
|
|
19.03.2014, 01:49
|
|
Интересующийся
|
|
Регистрация: 18.03.2014
Сообщений: 29
|
|
Сообщение от рони
|
if ((A>0&&B>0&&C>0) || (A<0&&B<0&&C<0)) если нужны все условия
|
Спасибо, помогло! А с длинами сторон, там что? Перед этим делал вывод других переменных(здесь же), выводило все те что через запятую, а в этом случае только одно значение или здесь тоже через логическое И (&&) нужно?
|
|
19.03.2014, 01:59
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,126
|
|
SnowyWolf,
напишите: что вводили, что получили, что должно быть?
|
|
19.03.2014, 02:11
|
|
Интересующийся
|
|
Регистрация: 18.03.2014
Сообщений: 29
|
|
a=Math.sqrt(Math.pow((X2-X1),2)+Math.pow((Y2-Y1),2)); a=parseInt(a);//Длина первой стороны треугольника
17 b=Math.sqrt(Math.pow((X3-X2),2)+Math.pow((Y3-Y2),2)); b=parseInt(b);//Длина второй стороны треугольника
18 c=Math.sqrt(Math.pow((X1-X3),2)+Math.pow((Y1-Y3),2)); c=parseInt(c);//Длина треттьей стороны треугольника
19 document.write('Длины сторон AB, BC, CA: <input type="text" disabled value="'+a+', '+b+', '+c+'"><br>');
Вот здесь должно выводить в поле три числа(длины сторон), а у меня выводит при разных координатах одно и тоже число. И только что заметил, что площадь тоже выводится криво, одно и тоже значение,
p=((a+b+c)/2); p=parseInt(p);//Полу-периметр треугольника
S=Math.sqrt(p*(p-a)*(p-b)*(p-c)); S=parseInt(S);//Площадь треугольника
//Проверка возможности построения и последуещие действия в случае возможности
document.write("Площадь треугольника:<br>");
if (a+b>c)//При этом условии построение возможно
document.write('Площадь ABC = <input type="text" value="'+S+'"><br>');
|
|
19.03.2014, 02:22
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,126
|
|
SnowyWolf,
немогу вопроизвести вашу ошибку -- какие данные то?
|
|
19.03.2014, 02:27
|
|
Интересующийся
|
|
Регистрация: 18.03.2014
Сообщений: 29
|
|
рони,
var X1, Y1, X2, Y2, X3, Y3, a, b, c, p, S;
X1=prompt("X1","-2"); X1=parseInt(X1);
Y1=prompt("Y1","1"); Y1=parseInt(Y1);
X2=prompt("X2","2"); X2=parseInt(X2);
Y2=prompt("Y2","2"); Y2=parseInt(Y2);
X3=prompt("X3","1"); X3=parseInt(X3);
Y3=prompt("Y3","-2"); Y3=parseInt(Y3);
//Вывод координат точек
document.write("Координаты точек:<br>");
document.write('X1=<input type="text" size=2 disabled value="'+X1+'"><br>');
document.write('Y1=<input type="text" size=2 disabled value="'+Y1+'"><br>');
document.write('X2=<input type="text" size=2 disabled value="'+X2+'"><br>');
document.write('Y2=<input type="text" size=2 disabled value="'+Y2+'"><br>');
document.write('X3=<input type="text" size=2 disabled value="'+X3+'"><br>');
document.write('Y3=<input type="text" size=2 disabled value="'+Y3+'"><br>');
a=Math.sqrt(Math.pow((X2-X1),2)+Math.pow((Y2-Y1),2)); a=parseInt(a);//Длина первой стороны треугольника
b=Math.sqrt(Math.pow((X3-X2),2)+Math.pow((Y3-Y2),2)); b=parseInt(b);//Длина второй стороны треугольника
c=Math.sqrt(Math.pow((X1-X3),2)+Math.pow((Y1-Y3),2)); c=parseInt(c);//Длина треттьей стороны треугольника
document.write('Длины сторон AB, BC, CA: <input type="text" value="'+a+', '+b+', '+c+'"><br>');
p=((a+b+c)/2); p=parseInt(p);//Полу-периметр треугольника
S=Math.sqrt(p*(p-a)*(p-b)*(p-c)); S=parseInt(S);//Площадь треугольника
//Проверка возможности построения и последующие действия в случае возможности
document.write("Площадь треугольника:<br>");
if (a+b>c)//При этом условии построение возможно
document.write('Площадь ABC = <input type="text" value="'+S+'"><br>');
else
document.write('<input type="text" disabled value="Треугольник не существует"><br>');
Вот тут данные по-умолчанию уже стоят, но если их при вводе в заменить то у меня ничего не меняется в поле Длины сторон и Площадь треугольника.
|
|
19.03.2014, 02:30
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,126
|
|
SnowyWolf,
у меня всё меняется
|
|
|
|