Рассмотрим решение поставленных задач с использованием языка программирования C# в среде разработки Visual Studio 2012. Предполагается, что вы имеете базовые знания языка программирования C#. Ниже приведен подробный алгоритм решения.
1. Удаление элементов массива, у которых первая и последняя цифра четные
Чтобы определить первую и последнюю цифру числа:
- Последняя цифра находится как остаток от деления числа на 10 (
num % 10
).
- Первая цифра находится путем итеративного деления числа на 10, пока оно не станет меньше 10.
При удалении элементов создаем новый массив, в который копируем только те элементы, которые удовлетворяют условиям.
Код для задачи 1:
using System;
using System.Collections.Generic;
using System.Linq;
class Program
{
static void Main()
{
// Задаем массив случайных чисел
Random random = new Random();
int n = 20; // размер массива
int[] array = new int[n];
for (int i = 0; i < n; i++)
{
array[i] = random.Next(-135, 176); // диапазон [-135, 175]
}
Console.WriteLine("Исходный массив:");
Console.WriteLine(string.Join(", ", array));
// Удаляем элементы, у которых первая и последняя цифры четные
List resultArray = new List();
foreach (int num in array)
{
int absNum = Math.Abs(num); // Берем модуль числа
int lastDigit = absNum % 10; // Последняя цифра
int firstDigit = absNum;
while (firstDigit >= 10)
{
firstDigit /= 10;
}
// Проверяем условие
if (!(firstDigit % 2 == 0 && lastDigit % 2 == 0))
{
resultArray.Add(num);
}
}
Console.WriteLine("Массив после удаления элементов:");
Console.WriteLine(string.Join(", ", resultArray));
}
}
2. Вставка чисел K1 и K2
Задача подразумевает вставку:
- Числа K1 после всех элементов, которые больше заданного числа (например,
threshold
).
- Числа K2 после всех элементов, которые кратны 5.
Для этого создадим новый массив, итерируемся по старому, добавляем элементы и вставляем числа K1 и K2 по указанным условиям.
Код для задачи 2:
static void InsertNumbers(int[] array, int K1, int K2, int threshold)
{
List modifiedArray = new List();
foreach (int num in array)
{
modifiedArray.Add(num);
if (num > threshold)
{
modifiedArray.Add(K1);
}
if (num % 5 == 0)
{
modifiedArray.Add(K2);
}
}
Console.WriteLine("Массив после вставки чисел K1 и K2:");
Console.WriteLine(string.Join(", ", modifiedArray));
}
// Вызов функции InsertNumbers
InsertNumbers(array, 999, 555, 50);
3. Перенос первых k элементов в конец массива
Для выполнения этой задачи мы можем использовать операции среза массива. Если k
— количество элементов, которые нужно переместить, то:
- Первые
k
элементов массива извлекаются и записываются в конец.
- Оставшиеся элементы остаются на своих местах.
Код для задачи 3:
static int[] MoveFirstKToEnd(int[] array, int k)
{
if (k = array.Length)
{
return array; // Если k некорректно, возвращаем массив без изменений
}
int[] firstPart = array.Take(k).ToArray(); // Первые k элементов
int[] secondPart = array.Skip(k).ToArray(); // Остальные элементы
return secondPart.Concat(firstPart).ToArray();
}
// Вызов функции MoveFirstKToEnd
int k = 5; // Количество элементов для переноса
int[] modifiedArray = MoveFirstKToEnd(array, k);
Console.WriteLine("Массив после переноса первых k элементов в конец:");
Console.WriteLine(string.Join(", ", modifiedArray));
Полный код программы:
using System;
using System.Collections.Generic;
using System.Linq;
class Program
{
static void Main()
{
// 1. Создаем массив случайных чисел
Random random = new Random();
int n = 20; // Размер массива
int[] array = new int[n];
for (int i = 0; i < n; i++)
{
array[i] = random.Next(-135, 176); // Диапазон [-135, 175]
}
Console.WriteLine("Исходный массив:");
Console.WriteLine(string.Join(", ", array));
// 2. Удаляем элементы, у которых первая и последняя цифры четные
List resultArray = new List();
foreach (int num in array)
{
int absNum = Math.Abs(num);
int lastDigit = absNum % 10;
int firstDigit = absNum;
while (firstDigit >= 10)
{
firstDigit /= 10;
}
if (!(firstDigit % 2 == 0 && lastDigit % 2 == 0))
{
resultArray.Add(num);
}
}
Console.WriteLine("Массив после удаления элементов:");
Console.WriteLine(string.Join(", ", resultArray));
// 3. Вставляем числа K1 и K2
int K1 = 999, K2 = 555, threshold = 50;
List modifiedArray = new List();
foreach (int num in resultArray)
{
modifiedArray.Add(num);
if (num > threshold)
{
modifiedArray.Add(K1);
}
if (num % 5 == 0)
{
modifiedArray.Add(K2);
}
}
Console.WriteLine("Массив после вставки чисел K1 и K2:");
Console.WriteLine(string.Join(", ", modifiedArray));
// 4. Перенос первых k элементов в конец
int k = 5;
int[] finalArray = MoveFirstKToEnd(modifiedArray.ToArray(), k);
Console.WriteLine("Массив после переноса первых k элементов в конец:");
Console.WriteLine(string.Join(", ", finalArray));
}
static int[] MoveFirstKToEnd(int[] array, int k)
{
if (k = array.Length)
{
return array;
}
int[] firstPart = array.Take(k).ToArray();
int[] secondPart = array.Skip(k).ToArray();
return secondPart.Concat(firstPart).ToArray();
}
}
Пояснение:
- Генерация массива: Используем
Random
для заполнения массива случайными числами в диапазоне [-135, 175].
- Удаление элементов: Проверяем первую и последнюю цифры каждого элемента. Если обе четные, элемент исключается.
- Вставка чисел K1 и K2: Используем условия для вставки чисел.
- Перенос элементов: Используем функции
Take
, Skip
, Concat
для формирования нового массива.
Скомпилируйте и выполните этот код в Visual Studio 2012, чтобы протестировать решение.