Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 19.03.2014, 00:58
Аватар для SnowyWolf
Интересующийся
Отправить личное сообщение для SnowyWolf Посмотреть профиль Найти все сообщения от SnowyWolf
 
Регистрация: 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 около недели, поэтому извините за мой тупизм!
Ответить с цитированием
  #2 (permalink)  
Старый 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.
Ответить с цитированием
  #3 (permalink)  
Старый 19.03.2014, 01:29
Аватар для SnowyWolf
Интересующийся
Отправить личное сообщение для SnowyWolf Посмотреть профиль Найти все сообщения от SnowyWolf
 
Регистрация: 18.03.2014
Сообщений: 29

При этом условии точка с данными координатами лежит в пределах треугольника. Ну, по крайней мере должно проверятся это условие. Может конечно не правильно оно задано, не знаю , искал ничего по этому поводу не нашел!
На счет формул. Они то правильные, проверено не раз(плюс в школе с геометрией дружил).
Ответить с цитированием
  #4 (permalink)  
Старый 19.03.2014, 01:42
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

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
Ответить с цитированием
  #5 (permalink)  
Старый 19.03.2014, 01:49
Аватар для SnowyWolf
Интересующийся
Отправить личное сообщение для SnowyWolf Посмотреть профиль Найти все сообщения от SnowyWolf
 
Регистрация: 18.03.2014
Сообщений: 29

Сообщение от рони
if ((A>0&&B>0&&C>0) || (A<0&&B<0&&C<0)) если нужны все условия
Спасибо, помогло! А с длинами сторон, там что? Перед этим делал вывод других переменных(здесь же), выводило все те что через запятую, а в этом случае только одно значение или здесь тоже через логическое И (&&) нужно?
Ответить с цитированием
  #6 (permalink)  
Старый 19.03.2014, 01:59
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

SnowyWolf,
напишите: что вводили, что получили, что должно быть?
Ответить с цитированием
  #7 (permalink)  
Старый 19.03.2014, 02:11
Аватар для SnowyWolf
Интересующийся
Отправить личное сообщение для SnowyWolf Посмотреть профиль Найти все сообщения от SnowyWolf
 
Регистрация: 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>');
Ответить с цитированием
  #8 (permalink)  
Старый 19.03.2014, 02:22
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

SnowyWolf,
немогу вопроизвести вашу ошибку -- какие данные то?
Ответить с цитированием
  #9 (permalink)  
Старый 19.03.2014, 02:27
Аватар для SnowyWolf
Интересующийся
Отправить личное сообщение для SnowyWolf Посмотреть профиль Найти все сообщения от SnowyWolf
 
Регистрация: 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>');

Вот тут данные по-умолчанию уже стоят, но если их при вводе в заменить то у меня ничего не меняется в поле Длины сторон и Площадь треугольника.
Ответить с цитированием
  #10 (permalink)  
Старый 19.03.2014, 02:30
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

SnowyWolf,
у меня всё меняется
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Простейшая отправка данных на сервер и вывод MBmusic AJAX и COMET 12 23.09.2013 12:35
отправка данных из формы и вывод полученных данных sxe jQuery 2 21.05.2013 00:34
Двойная Фильтрация данных таблицы David0707 Общие вопросы Javascript 0 19.03.2012 13:00
Вывод данных в поле ввода с помощью JS Aleks-prog Ваши сайты и скрипты 0 23.06.2011 12:09
Вывод данных в Друпал 6 из MySQL, небольшая работа torquemada Работа 1 22.05.2011 17:05