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

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

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

В общем нужно сделать сдвиг массива,чтобы занести новый эл-нт.Я запутался с циклом моего "сдвига".Он работает,но не очень хорошо)Если эл-нт находится на последней позиции и предпоследней.Не могу придумать,как сделать
Листинг программы
  1. class Program
  2. {
  3. static int [] setarr(int n)
  4. {
  5. int[] arr = new int[2 * n];
  6. for (int i=0;i<n;i++)
  7. {
  8. Console.Write("Arr[{0}]=", i);
  9. arr[i] = Convert.ToInt32(Console.ReadLine());
  10. }
  11. return arr;
  12. }
  13. static void print (int [] arr, int n)
  14. {
  15. for (int i=0;i<n;i++)
  16. {
  17. Console.Write("{0}", arr[i]);
  18. }
  19. Console.WriteLine();
  20. }
  21. static void add (int [] arr,ref int n)
  22. {
  23. for (int i=n;i>=0;i--)
  24. {
  25. if(arr[i-1]>0)
  26. {
  27. int x = arr[i];
  28. ++n;
  29. arr[i] = Convert.ToInt32(Console.ReadLine());
  30. arr[++i] = x;
  31. break;
  32. }
  33. }
  34. }
  35. static void Main()
  36. {
  37. Console.Write("Введите размерность массива:");
  38. int n = Convert.ToInt32(Console.ReadLine());
  39. int[] arr = setarr(n);
  40. Console.WriteLine("Исходный массив:");
  41. print(arr, n);
  42. Console.Write("Введите новое значение:");
  43. add(arr,ref n);
  44. Console.WriteLine("Изменённый массив:");
  45. print(arr, n);
  46. }
  47. }

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

textual
Листинг программы
  1.         static int[] setarr(int n)
  2.         {
  3.  
  4.             int[] arr = new int[n];
  5.             for (int i = 0; i < n; i++)
  6.             {
  7.                 Console.Write("Arr[{0}]=", i);
  8.                 arr[i] = Convert.ToInt32(Console.ReadLine());
  9.             }
  10.             return arr;
  11.         }
  12.  
  13.         static void print(int[] arr)
  14.         {
  15.             for (int i = 0; i < arr.Length; i++)
  16.             {
  17.                 Console.Write("{0}", arr[i]);
  18.             }
  19.             Console.WriteLine();
  20.         }
  21.  
  22.         static int[] add(int[] arr,int pos, int k)
  23.         {
  24.             int[] result = new int[arr.Length + 1];
  25.             bool inserted = false;int insVal = 0;
  26.             for(int i = 0; i < arr.Length; i++)
  27.             {
  28.                 if (i == pos)
  29.                 {
  30.                     result[i] = k;
  31.                     inserted = true;
  32.                     insVal = arr[i];
  33.                 }
  34.                 else
  35.                 {
  36.                     result[i] = arr[i];
  37.                 }
  38.             }
  39.             if (!inserted)
  40.             {
  41.                 result[arr.Length] = k;
  42.             }
  43.             else
  44.             {
  45.                 result[arr.Length] = insVal;
  46.             }
  47.  
  48.             return result;
  49.         }
  50.  
  51.         static int[] addAfterLastPositive(int[] arr, int k)
  52.         {
  53.             int pos = 0;
  54.  
  55.             for(int i = 0; i < arr.Length; i++)
  56.             {
  57.                 if (arr[i] > 0)
  58.                 {
  59.                     pos = i;
  60.                 }
  61.             }
  62.  
  63.             return add(arr, pos+1, k);
  64.         }
  65.  
  66.         static void Main()
  67.         {
  68.             Console.Write("Введите размерность массива:");
  69.             int n = Convert.ToInt32(Console.ReadLine());
  70.             int[] arr = setarr(n);
  71.             Console.WriteLine("Исходный массив:");
  72.             print(arr);
  73.             Console.Write("Введите новое значение:");
  74.             int k = Convert.ToInt32(Console.ReadLine());
  75.             arr = addAfterLastPositive(arr, k);
  76.             Console.WriteLine("Изменённый массив:");
  77.             print(arr);
  78.  
  79.             Console.ReadKey();
  80.         }

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


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

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

5   голосов , оценка 3.6 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы