Задачи на массивы

Хотите больше практики по работе с массивами? На ближайших страницах вас ждут простые задачи, которые вы должны уметь решать с закрытыми глазами, так как сложно оценить их фундаментальность и частоту использования в реальной практики.

Давайте возьмём за основу массив с целыми числами. Размер этого массива может быть любой. Мы будем в коде просто обращаться к некоторому условному “array”.

Перебор массива

Вам необходимо сделать несколько блоков кода, которые делают следующее:

  • Блок 1. Выводит все элементы массива.
  • Блок 2. Выводит все элементы массива в обратном порядке.
  • Блок 3. Выводит чётные элементы массива.
  • Блок 4. Выводит все элементы массива через 1.
  • Блок 5. Выводит все элементы массива пока не встретится элемент -1.

Решение:

int[] array = { 0, 1, 3, 4, 5, 2, 1, -4, -1, 10, 55 };

for(int i = 0; i < array.Length; i++)
{
    Console.WriteLine(array[i]);
}

for(int i = array.Length - 1; i >= 0; i--)
{
    Console.WriteLine(array[i]);
}

for(int i = 0; i < array.Length; i++)
{
    int element = array[i];

    if(element % 2 == 0)
    {
        Console.WriteLine(element);
    }
}

for(int i = 0; i < array.Length; i += 2)
{
    Console.WriteLine(array[i]);
}

for(int i = 0; i < array.Length; i++)
{
    int element = array[i];

    if (element == -1)
        break;

    Console.WriteLine(element);
}

Добавление и удаление элементов массива

Для таких операций в C# предусмотрен класс List<T>, но для практики мы попробуем сделать всё вручную. У нас есть тот же array и нужно предоставить блоки которые:

  • Блок 1. В массив добавляется элемент в конец.
  • Блок 2. В массив добавляется элемент в начало.
  • Блок 3. В массив добавляется элемент в позицию (допустим 4).
  • Блок 4. Из массива удаляется элемент с конца.
  • Блок 5. Из массива удаляется элемент с начала.
  • Блок 6. Из массива удаляется элемент с позиции (допустим 5)
  • Блок 7. Создание массива из двух массивов. В итоговом массиве должны быть элементы первого и второго массива.

Решение:

int[] array = { 0, 1, 3, 4, 5, 2, 1, -4, -1, 10, 55 };

//block 1
int valueToAdd = 10;
int[] largerArray = new int[array.Length + 1];

for (int i = 0; i < array.Length; i++)
{
    largerArray[i] = array[i];
}

largerArray[array.Length] = valueToAdd;
array = largerArray;


//block2
valueToAdd = 10;
largerArray = new int[array.Length + 1];

for (int i = 1; i <= array.Length; i++)
{
    largerArray[i] = array[i - 1];
}

largerArray[0] = valueToAdd;
array = largerArray;


//block 3
valueToAdd = 10;
int position = 4;
largerArray = new int[array.Length + 1];

for (int i = 0, j = 0; i < array.Length; i++)
{
    if (i == position)
        continue;

    largerArray[i] = array[j];
    j++;
}

largerArray[position] = valueToAdd;
array = largerArray;


//block 4
int[] smallerArray = new int[array.Length - 1];

for (int i = 0; i < smallerArray.Length; i++)
{
    smallerArray[i] = array[i];
}

array = smallerArray;


//block 5
smallerArray = new int[array.Length - 1];

for (int i = 1; i <= smallerArray.Length; i++)
{
    smallerArray[i - 1] = array[i];
}

array = smallerArray;

//block 6
smallerArray = new int[array.Length - 1];
position = 5;

for(int i = 0, j = 0; i < array.Length; i++)
{
    if (i == position)
        continue;

    smallerArray[j] = array[i];
    j++; 
}

//block 7
int[] array1 = { 1, 2, 3 };
int[] array2 = { 4, 5, 6 };
int[][] toMerge = { array1, array2 };

int[] result = new int[array1.Length + array2.Length];

for (int i = 0, j = 0; i < toMerge.Length; i++)
{
    for(int k = 0; k < toMerge[i].Length; k++)
    {
        result[j] = toMerge[i][k];
        j++;
    }
}

Если вы нашли ошибку, пожалуйста выделите её и нажмите Ctrl+Enter.


Leave a Reply

Your email address will not be published. Required fields are marked *