Вставить новый элемент после последнего положительного - C#

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

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

В общем нужно сделать сдвиг массива,чтобы занести новый эл-нт.Я запутался с циклом моего "сдвига".Он работает,но не очень хорошо)Если эл-нт находится на последней позиции и предпоследней.Не могу придумать,как сделать
class Program
    {
      static int [] setarr(int n)
        {
            
            int[] arr = new int[2 * n];
            for (int i=0;i<n;i++)
            {
                Console.Write("Arr[{0}]=", i);
                arr[i] = Convert.ToInt32(Console.ReadLine());
            }
            return arr;
        }
 
        static void print (int [] arr, int n)
        {
            for (int i=0;i<n;i++)
            {
                Console.Write("{0}", arr[i]);
            }
            Console.WriteLine();
        }
 
        static void add (int [] arr,ref int n)
        {
            for (int i=n;i>=0;i--)
            {
                if(arr[i-1]>0)
                {
                    int x = arr[i];
                    ++n;
                    arr[i] = Convert.ToInt32(Console.ReadLine());
                    arr[++i] = x;
                    break;
                }
            }
            
        }
 
        static void Main()
        {
            Console.Write("Введите размерность массива:");
            int n = Convert.ToInt32(Console.ReadLine());
            int[] arr = setarr(n);
            Console.WriteLine("Исходный массив:");
            print(arr, n);
            Console.Write("Введите новое значение:");
            add(arr,ref n);
            Console.WriteLine("Изменённый массив:");
            print(arr, n);
        }
    }

Решение задачи: «Вставить новый элемент после последнего положительного»

textual
Листинг программы
        static int[] setarr(int n)
        {
 
            int[] arr = new int[n];
            for (int i = 0; i < n; i++)
            {
                Console.Write("Arr[{0}]=", i);
                arr[i] = Convert.ToInt32(Console.ReadLine());
            }
            return arr;
        }
 
        static void print(int[] arr)
        {
            for (int i = 0; i < arr.Length; i++)
            {
                Console.Write("{0}", arr[i]);
            }
            Console.WriteLine();
        }
 
        static int[] add(int[] arr,int pos, int k)
        {
            int[] result = new int[arr.Length + 1];
            bool inserted = false;int insVal = 0;
            for(int i = 0; i < arr.Length; i++)
            {
                if (i == pos)
                {
                    result[i] = k;
                    inserted = true;
                    insVal = arr[i]; 
                }
                else
                {
                    result[i] = arr[i];
                }
            }
            if (!inserted)
            {
                result[arr.Length] = k;
            }
            else
            {
                result[arr.Length] = insVal;
            }
 
            return result;
        }
 
        static int[] addAfterLastPositive(int[] arr, int k)
        {
            int pos = 0;
 
            for(int i = 0; i < arr.Length; i++)
            {
                if (arr[i] > 0)
                {
                    pos = i;
                }
            }
 
            return add(arr, pos+1, k);
        }
 
        static void Main()
        {
            Console.Write("Введите размерность массива:");
            int n = Convert.ToInt32(Console.ReadLine());
            int[] arr = setarr(n);
            Console.WriteLine("Исходный массив:");
            print(arr);
            Console.Write("Введите новое значение:");
            int k = Convert.ToInt32(Console.ReadLine());
            arr = addAfterLastPositive(arr, k);
            Console.WriteLine("Изменённый массив:");
            print(arr);
 
            Console.ReadKey();
        }

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


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

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

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