Даны координаты двух точек (x1, y1) и x2, y2)
напишите функцию с именем distanceComparison
которая возвращает 1, если (x1, y1) ближе к началу координат
2, если (x2, y2) ближе к началу координат
0, если точки находятся на одинаковом расстоянии
НАПРИМЕР: distanceComparison(3, 4, 3, 0) должна возвратить 2
JavaScript
Какая точка ближе к началу координат?
Координаты могут быть нулевыми и это задачу несколько усложняет.
Даже не уверен что мое решение на 100% правильное для абсолютно всех случаев, но для 3, 4, 3, 0 вполне работает.
Да, вижу что есть проблемы... Чтобы учитывать 0,4, 4, 0 можно сделать
if((x1 + y1) - (x2 + y2) == 0) {
result = 0;
return result
}
Но это будет ломать другие варианты
>>>
function distanceComparison(x1, y1, x2, y2) {
if(x1 != 0 && x2 != 0 && y1 != 0 && y2 != 0) {
res1 = Math.sqrt((x1**2)*(y1**2));
res2 = Math.sqrt((x2**2)*(y2**2));
result = (res1 < res2) ? 1: (res1 > res2) ? 2: 0
}
if((x1 == 0 || y1 == 0) && ((x2 != 0 || y2 != 0)) ) {
if ((Math.sqrt((x2**2)*(y2**2)) - Math.sqrt(x1 + y1)) == 0) {result = 0}
else {
if((x1 + y1) > x2 && (x1 + y1) > y2) {
result = 2
}
else {
result = 1
}
}
}
if((x1 != 0 || y1 != 0) && ((x2 == 0 || y2 == 0)) ) {
if ((Math.sqrt((x1**2)*(y1**2)) - Math.sqrt(x2 + y2)) == 0) {result = 0}
else {
if((x2 + y2) > x1 && (x2 + y2) > y1) {
result = 1
}
else {
result = 2
}
}
}
return result;
}
Даже не уверен что мое решение на 100% правильное для абсолютно всех случаев, но для 3, 4, 3, 0 вполне работает.
Да, вижу что есть проблемы... Чтобы учитывать 0,4, 4, 0 можно сделать
if((x1 + y1) - (x2 + y2) == 0) {
result = 0;
return result
}
Но это будет ломать другие варианты
>>>
function distanceComparison(x1, y1, x2, y2) {
if(x1 != 0 && x2 != 0 && y1 != 0 && y2 != 0) {
res1 = Math.sqrt((x1**2)*(y1**2));
res2 = Math.sqrt((x2**2)*(y2**2));
result = (res1 < res2) ? 1: (res1 > res2) ? 2: 0
}
if((x1 == 0 || y1 == 0) && ((x2 != 0 || y2 != 0)) ) {
if ((Math.sqrt((x2**2)*(y2**2)) - Math.sqrt(x1 + y1)) == 0) {result = 0}
else {
if((x1 + y1) > x2 && (x1 + y1) > y2) {
result = 2
}
else {
result = 1
}
}
}
if((x1 != 0 || y1 != 0) && ((x2 == 0 || y2 == 0)) ) {
if ((Math.sqrt((x1**2)*(y1**2)) - Math.sqrt(x2 + y2)) == 0) {result = 0}
else {
if((x2 + y2) > x1 && (x2 + y2) > y1) {
result = 1
}
else {
result = 2
}
}
}
return result;
}
Ну и в чем проблема? Теорему Пифагора забыл?
Юрбан Сухоплюев
function distanceComparison(x1, y1, x2, y2) {
res1 = Math.sqrt((x1**2)+(y1**2));
res2 = Math.sqrt((x2**2)+(y2**2));
return (res1 < res2) ? 1: (res1 > res2) ? 2: 0
}
>>>
Попутал поначалу + и *, и понесло из-за того что если в аргументах есть 0 - получался 0. А нужно просто было быть внимательнее
res1 = Math.sqrt((x1**2)+(y1**2));
res2 = Math.sqrt((x2**2)+(y2**2));
return (res1 < res2) ? 1: (res1 > res2) ? 2: 0
}
>>>
Попутал поначалу + и *, и понесло из-за того что если в аргументах есть 0 - получался 0. А нужно просто было быть внимательнее
Нужно просто сравнить длину векторов (x1,y1) и (x2,y2).
Длина вектора вычисляется по формуле sqrt( x^2 + y^2 )
Длина вектора вычисляется по формуле sqrt( x^2 + y^2 )
Sasha Cherkashin
спасибо)
Похожие вопросы
- Дано две точки с координатами x1,y1 и x2,y2, Найдите формулу для расчета угла поворота второй точки относительно первой.
- Нужно ли ставить точку с запятой после каждого выражения в JavaScript?
- JS скрипты. Начало работы. csgodouble.(com)
- Почему большинство прогеров не ставят точку с запятой в конце строчек кода при разработке приложений на js?
- Что такое стек c точки зрения javascript?
- javascript, арифметика Я только начала учить, так что извините, но я не понимаю, как заставить его работать?
- Подскажите книги для изучения javascript? Хочу начать изучать веб программирование javascript подойтет для начала?
- За сколько времени возможно выучить язык JavaScript? И что нужно знать для его изучения. С самого начала.
- C++ Вывести сообщение о том, какая из точек ближе к началу координат, и все соответствующие расстояния.
- Как по координатам трех точек треугольника определить - начало координат находится внутри него или за его пределами?
https://jsfiddle.net/h6dstc1j/