2015-11-28 4 views
-2

У меня есть задача найти, какой круг пересекается с большинством других кругов.Как сравнить один элемент массива со всеми остальными элементами массива в цикле for?

У меня есть координаты x, y-координаты и радиусы многих разных кругов. Я поместил x-координаты в массив X[], y-координаты в Y[] и радиус в R[]. Я также нашел способ проверить, пересекается ли один круг с другим, как показано ниже.

Я знаю, что нужно использовать два цикла FOR, но я не могу найти способ, так что цикл сравнивает один элемент со всеми другими элементами массива, затем сравнивает другой элемент со всеми другими элементами и т. Д. Может быть, кто-то знает дорогу?

for (int i = 0; i < n; i++) // n is the number of circles 
{ 
    for (int j = 0; j < n - 1; j++) 
    { 
     // More code here... 
    } 
} 

Чтобы проверить, если круг i пересекается с кругом i+1, мой if оценивает:

if (Distance (n, X, Y,i) < (Radius[i] + Radius[i+1])) // i is the index of the element 
+0

для (INT I = 0; <п; я ++) // п есть число кругов \t { \t \t для (Int J = 0, J <п - 1; j ++) Для того, чтобы проверить, если круг пересекает мой IF: if (Расстояние (n, X, Y, i) <(Радиус [i] + Радиус [i + 1])) // i - индекс элемента – feco

+0

Прежде всего, что вы пробовали ? Можете ли вы показать нам? Во-вторых, хороший способ найти, пересекаются ли два круга, - это вычисление разности центров, а затем проверить, больше ли сумма радиуса окружности больше расстояния. Если расстояние больше суммы радиуса, круги не пересекаются. – KostasRim

+1

Функция, которая находит расстояние: distance = sqrt (pow ((A [индекс + 1] - A [индекс]), 2) + pow ((B [индекс + 1] - B [индекс]), 2)); И функция, которая должна найти, если пересечение круга и какая окружность пересекается больше всего: for (int i = 0; i feco

ответ

0

С моей точки зрения, есть два вопроса, которые задают одновременно. Первый вопрос - как сравнить каждый элемент одного массива со всеми элементами второго массива. Второй вопрос заключается в том, как найти максимальное количество раз, когда условие было выполнено. Кроме того, условие зависит от сравнения элемента в первом массиве с элементами второго массива.

int max = 0; 
int n = 9;      // n will probably be the size of your arrays 
for (int i = 0; i <= n; i++) 
{ 
    int times_condition_met = 0; 
    for (int j = 0; j <= n; j++) 
    { 
     if (condition == true) // Checking a condition/making a comparison. 
     { 
      times_condition_met++; // Increment the number of times the condition is met. 
     } 
    } 

    if (times_condition_met > max) 
    { 
     // Update the max and other information you're interested in. 
     // I.e. this is where you want to save the information regarding 
     // the index of your circles. 
    } 

} 

По существу, я считаю, ваша задача требует вам два Отслеживайте какое-то статистика при выполнении сравнений между вашими двумя массивами. Для этого вам нужно добавить дополнительный код во вложенные циклы, которые выполняют это отслеживание.

+0

Возможно, я сказал свой вопрос немного неправильно. Я хочу, чтобы цикл FOR выбирал первый круг, а затем проверял, с каким количеством кругов он пересекается, и покажите мне номер, затем возьмите второй круг и проверьте, сколько кругов оно пересекает и так далее. И после того, как эти вычисления будут выполнены, нужно будет найти наибольшее значение (количество кругов, которые он пересекает), и что он покажет мне индекс этого круга (который пересекается с большинством других кругов). – feco

+0

Цикл FOR берет первый круг, а затем начинает проверять, пересекается ли он со вторым кругом, третьим кругом, четвертым кругом, и в конце он показывает мне количество кругов, с которыми оно пересекается. – feco

+0

Хорошо. В этом случае есть некоторые недостающие компоненты, которые вы хотите рассмотреть: 1.) Вам нужно будет найти способ подсчета количества раз, когда какая-то окружность пересекается с другими. 2.) Вам нужно будет найти способ хранения текущего максимального значения, которое вы рассчитали. 3.) Вам также необходимо найти способ обновления этого максимума. –

Смежные вопросы