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