Проверьте по двум отдельным значениям массива и выберите самое маленькое, чтобы вставить в новый массив CW новые значения массива - PullRequest
0 голосов
/ 17 января 2019

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

Итак, я создал два массива

int[] one = new int[] { 
    4160414, 6610574, 2864453, 9352227, -4750937, -3132620, 2208017,  
    -2226227, -8415856, -9834062, -3401569, 7581671, 8068562, 7520435,  
    -9277044, -7821114, -3095212, 966785, 6873349, -8441152, -7015683, 
    -6588326, -282013, 4051534, 9930123, -3093234 };

int[] two = new int[] { 
    1099626, 6083415, 8083888, -8210392, 2665304, -8710738, -8708241, 
    8859200, -1255323, 5604634, 2921294, -7260228, 7261646, 1137004, 
    5805162, 4883369, 8789460, 9769240, 319012, -7877588, -1573772, 
    5192333, 1185446, 1302131, 4217472, -3471445};

Мой следующий шаг, о котором я подумал, - мне придется пройти через каждый массив

for (int i = 0; i < one.Length; i++)
{
    int xValue = one[i];

    for (int j = 0; j < two.Length; j++)
    {
        int yValue = two[j];
    }
}

Теперь, когда у меня есть индекс каждого массива, мне нужно проверить, является ли индекс xValue меньше, чем индекс yValue

if (xValue < yValue)
{
   // dO SOMETHING HERE
}
if (yValue < xValue)
{
  // Do Something HERE
}

Где я запутался, с C #, насколько я понимаю, вы не можете помещать новые значения в массив, он должен быть новым экземпляром массива и копировать?

Итак, я попытался сделать

if (xValue < yValue)
{
  Array.Copy(one, x, 13);
}
if (yValue < xValue)
{
 Array.Copy(two, x, 13)
}

Оба массива имеют 26 значений, поэтому для вставки проверенного значения потребуется создать новый массив из 13, но Array.Copy, похоже, не работает, получая массив из границ, проверяет нижние границы.

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

Ответы [ 2 ]

0 голосов
/ 17 января 2019

По сути, вам нужно определить размер нового массива при его объявлении. Сделайте так же, как размер one. Затем добавьте наименьший элемент из one или two на каждой итерации, сравнив элементы в каждом массиве с индексом i.

int[] smallest = new int[one.Length]; 

for (int i = 0; i < one.Length; i++)
{
    if (one[i] < two[i])
    {
        smallest[i] = one[i];
    }
    else 
    {
        smallest[i] = two[i];
    }
}
0 голосов
/ 17 января 2019

Вы можете использовать LINQ Zip для достижения этой цели:

int[] smallest = one.Zip(two, (o, t) => Math.Min(o,t)).ToArray();

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

Попробуйте онлайн

...