Вставить новый элемент после последнего положительного - 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();
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д