Хотите больше практики по работе с массивами? На ближайших страницах вас ждут простые задачи, которые вы должны уметь решать с закрытыми глазами, так как сложно оценить их фундаментальность и частоту использования в реальной практики.
Давайте возьмём за основу массив с целыми числами. Размер этого массива может быть любой. Мы будем в коде просто обращаться к некоторому условному “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++;
}
}