Объединить два массива в один, включив второй массив между k-м и (k+1)-м элементами первого - C# (178546)

Узнай цену своей работы

Формулировка задачи:

Даны два одномерных массива с различным количеством элементов и натуральное число k. Объединить их в один массив, включив второй массив между k-м и (k+1)-м элементами первого и не используя при этом дополнительный массив. Нашел аналогичную программу на форуме, но на языке Паскаль. Вот что получилось после попытки переписать тот код на язык Си шарп. Программа после начала первого массива и заданного числа k выводит числа с первого и второго массива чередуя их между собой. Не могу понять как это исправить.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            int n = int.Parse(Console.ReadLine());
            int m = int.Parse(Console.ReadLine());
            int[] a = new int[100];
            int[] b = new int[100];
            Random rnd = new Random();
            for (int i = 0; i < n; i++) { a[i] = rnd.Next(1, 100); Console.Write(" " + a[i]); }
            Console.WriteLine();
            for (int i = 0; i < m; i++) { b[i] = rnd.Next(0, 100); Console.Write(" " + b[i]); }
            Console.WriteLine();
            int k = int.Parse(Console.ReadLine());
            k = (k - 1);
            for (int i = m - 1; i >= 0; i--)
            {
                n = (n - 1) + 1;
                for (int j = n; j > k + 1 + i; j--)
                {
                    a[j] = a[j - 1];
                    a[j - 1] = b[i];
                }
            }
            Console.WriteLine();
            Console.WriteLine("Объединение массивов:" );
            Console.WriteLine();
            for (int i = 0; i < n; i++) { Console.Write(" " + a[i]); }
            Console.ReadKey();
        }
    }
}

Решение задачи: «Объединить два массива в один, включив второй массив между k-м и (k+1)-м элементами первого»

textual
Листинг программы
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            int n = int.Parse(Console.ReadLine());
            int m = int.Parse(Console.ReadLine());
            int[] a = new int[100];
            int[] b = new int[100];
            Random rnd = new Random();
            for (int i = 0; i < n; i++) { a[i] = rnd.Next(1, 100); Console.Write(" " + a[i]); }
            Console.WriteLine();
            for (int i = 0; i < m; i++) { b[i] = rnd.Next(0, 100); Console.Write(" " + b[i]); }
            Console.WriteLine();
            int k = int.Parse(Console.ReadLine());
            k = (k - 1);
 
            var c = new int[a.Length + b.Length];
 
            Array.Copy(a, c, k);
            Array.Copy(b, 0, c, k, b.Length);
            Array.Copy(a, k, c, b.Length + k, a.Length - k);
 
            Console.WriteLine();
            Console.WriteLine("Объединение массивов:" );
            Console.WriteLine();
            for (int i = 0; i < c.Length; i++) { Console.Write(" " + c[i]); }
            Console.ReadKey();
        }
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 4.429 из 5
Похожие ответы