Удвоение всех вхождений элементов, расположенных на четных (0-четное) позициях (DublicateOnEvenPos() - C#

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

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

Удвоение всех вхождений элементов, расположенных на четных (0-четное) позициях (DublicateOnEvenPos()). не могу понять почему не удваивает
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. namespace Laba4
  6. {
  7. class Program
  8. {
  9. static void Main(string[] args)
  10. {
  11. List<int> arr = new List<int>();
  12. int n = int.Parse(Console.ReadLine());
  13. int[] array = new int[n];
  14. for (int i = n; i >= 0; i--)
  15. {
  16. arr.AddFirst(i);
  17. }
  18. arr.Reset();
  19. do
  20. {
  21. Console.Write("{0} ",arr.Current);
  22. }
  23. while (arr.MoveNext());
  24. arr.DublicateOnEvenPos(n,array);
  25. Console.ReadLine();
  26. }
  27. }
  28. }
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. namespace Laba4
  6. {
  7. class List<T>
  8. {
  9. class ListItem<T>
  10. {
  11. public T Data { get; set; }
  12. public ListItem<T> Next { get; set; }
  13. }
  14. private ListItem<T> first;
  15. private ListItem<T> current;
  16. public T Current
  17. { get { return current.Data; }
  18. set
  19. {
  20. if(current!=null)
  21. { current.Data=value;}
  22. }
  23. }
  24. public void Reset()
  25. {
  26. current = first;
  27. }
  28. public void AddFirst(T Data)
  29. {
  30. if (first == null)
  31. {
  32. first = new ListItem<T>() { Data = Data };
  33. current = first;
  34. }
  35. else
  36. {
  37. ListItem<T> temp = new ListItem<T>() { Data = Data };
  38. temp.Next = first;
  39. first = temp;
  40. }
  41. }
  42. public bool MoveNext()
  43. {
  44. if (current!=null)
  45. {
  46. current = current.Next;
  47. return current != null;
  48. }
  49. return false;
  50. }
  51. public T[] DublicateOnEvenPos(int n,T[] array)
  52. {
  53. //задаем новый массив, длиной в 2 раза больше
  54. T[] arr = new T[n * 2];
  55. int j = 0;
  56. //Заполнение нового массива
  57. for (int i = 0; i < n; i++)
  58. {
  59. //Проверка номера элемента на четность
  60. if (i % 2 == 0)
  61. {
  62. //Заполняем новый массив
  63. arr[j] = array[i];
  64. j++;
  65.  
  66. }
  67. //Заполняем новый массив
  68. arr[j] = array[i];
  69. j++;
  70. }
  71. n = j;
  72. //Длину старого массива делаем такой же как у нового
  73. array = arr;
  74. return array;
  75.  
  76. }
  77. }
  78. }

Решение задачи: «Удвоение всех вхождений элементов, расположенных на четных (0-четное) позициях (DublicateOnEvenPos()»

textual
Листинг программы
  1.         public T[] DublicateOnEvenPos<T>(int n, T[] array)
  2.         {
  3.             var arr = new T[n << 1];
  4.             for (var i = 0; i < arr.Length; i += 2)
  5.             {
  6.                 arr[i] = array[i >> 1];
  7.                 arr[i + 1] = array[i >> 1];
  8.             }
  9.             return arr;
  10.         }

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


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

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

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

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

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

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