Вставить в массив новый элемент после последнего положительного - 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
Листинг программы
class Program
{
    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 void add(ref int[] arr, int newVal)
    {
        int index = arr.Length;
        while (arr[--index] <= 0);
        Array.Resize(ref arr, arr.Length + 1);
        for (int i=arr.Length-1; i>index+1; i--)
        {
            int tmp = arr[i];
            arr[i] = arr[i - 1];
            arr[i - 1] = tmp;
        }
        arr[index + 1] = newVal;   
    }
 
 
    static void Main()
    {
        Console.Write("Введите размерность массива:");
        int n = Convert.ToInt32(Console.ReadLine());
        int[] arr = setarr(n);
        Console.WriteLine("Исходный массив:");
        print(arr);
        Console.Write("Введите новое значение:");
        int newVal = Convert.ToInt32(Console.ReadLine());
        add(ref arr, newVal);
        Console.WriteLine("Изменённый массив:");
        print(arr);
    }
}

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


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

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

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