Нужно создать массив размерности 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];
Все, спасибо. Очень помог. Я до этого просто пытался в массив A добавить элементы (первый скрин), но теперь посмотрел на то, что ты написал, и понял, что это отличная идея. Конечно, не без "скатал", но все же сделал. С твой помощью. (Второй скрин).
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(); } }
PrintArray будет существенно лучше, если использовать StringBuilder, поскольку запись в stdout процесс не такой уж и быстрый с учётом того, что работает в C# не напрямую.
Jurijus Zaksas
Искусственный Интеллект
(426897)
Даже если просто в строку все сначала засунуть, будет быстрее. Но для этих целей сойдет.
Уже сколько пытаюсь, ничего не получается.