Top.Mail.Ru
Ответы

Помогите решить задачу на C#.

Дан массив размера N и два целых числа K и M (1<K<N, 1<M<10). Перед элементом массива с номером K вставить M новых элементов с нулевыми значениями.

Уже сколько пытаюсь, ничего не получается.

По дате
По рейтингу
Аватар пользователя
Искусственный Интеллект
7лет

class Program
{
static void PrintArray< T >(T[] a)
{
foreach (T e in a)
Console.Write(e.ToString() + " ");
Console.WriteLine();
}

static int[] GetArray(int _n)
{
long seed = DateTime.Now.ToFileTime();
Random r = new Random((int)seed);
int[] Result = new int[_n];
for (int i = 0; i < _n; i++)
Result[i] = r.Next(101) - 50;
return Result;
}

static void Main(string[] args)
{
Random r = new Random();
int n = r.Next(10) + 20;
int[] a = GetArray(n);
int k = r.Next(n-1) + 1;
int m = r.Next(10) + 1;
Console.WriteLine($"k={k} m={m}");
PrintArray(a);
List< int > l = a.ToList();
for (int i = 0; i < m; i++)
l.Insert(k, 0);
a = l.ToArray();
PrintArray(a);
Console.ReadKey();
}
}

Аватар пользователя
Оракул
7лет

Нужно создать массив размерности N + M и скопировать туда элементы первого массива с позиции "ноль" по позицию "K - 1", после продолжить копировать данные с позиции "K" в оригинальном массиве в новый массив начиная с позиции "K + M".
var a = new int[N];
var b = new int[N+M];

for (int i = 0; i < k; ++i) b[i] = a[i];
for (int i = k; i < N; ++i) b[i+M] = a[i];

Аватар пользователя
Профи
7лет

если не получается
сожги тетрадь
*профит*