Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Не правильный вывод данных. (https://javascript.ru/forum/misc/45867-ne-pravilnyjj-vyvod-dannykh.html)

SnowyWolf 19.03.2014 00:58

Не правильный вывод данных.
 
Есть скрипт:
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

SnowyWolf,
интересно кто кроме вас будет проверять правильность формул ... странные только условия через запятую - что по вашему проверяет это условие
if ((A>0, B>0, C>0) || (A<0, B<0, C<0))

по моему что если C не равно нулю - а и b пофигу какие

SnowyWolf 19.03.2014 01:29

При этом условии точка с данными координатами лежит в пределах треугольника. Ну, по крайней мере должно проверятся это условие. Может конечно не правильно оно задано, не знаю , искал ничего по этому поводу не нашел!
На счет формул. Они то правильные, проверено не раз(плюс в школе с геометрией дружил).

рони 19.03.2014 01:42

if ((A>0&&B>0&&C>0) || (A<0&&B<0&&C<0)) если нужны все условия
http://javascript.ru/manual/operator
http://javascript.ru/comma
http://javascript.ru/boolean-operators

SnowyWolf 19.03.2014 01:49

Цитата:

Сообщение от рони
if ((A>0&&B>0&&C>0) || (A<0&&B<0&&C<0)) если нужны все условия

Спасибо, помогло! А с длинами сторон, там что? Перед этим делал вывод других переменных(здесь же), выводило все те что через запятую, а в этом случае только одно значение или здесь тоже через логическое И (&&) нужно?

рони 19.03.2014 01:59

SnowyWolf,
напишите: что вводили, что получили, что должно быть?

SnowyWolf 19.03.2014 02:11

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

SnowyWolf,
немогу вопроизвести вашу ошибку -- какие данные то?

SnowyWolf 19.03.2014 02:27

рони,
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

SnowyWolf,
у меня всё меняется


Часовой пояс GMT +3, время: 12:13.