Удвоение всех вхождений элементов, расположенных на четных (0-четное) позициях (DublicateOnEvenPos() - C#
Формулировка задачи:
Удвоение всех вхождений элементов, расположенных на четных (0-четное) позициях (DublicateOnEvenPos()).
не могу понять почему не удваивает
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Laba4 { class Program { static void Main(string[] args) { List<int> arr = new List<int>(); int n = int.Parse(Console.ReadLine()); int[] array = new int[n]; for (int i = n; i >= 0; i--) { arr.AddFirst(i); } arr.Reset(); do { Console.Write("{0} ",arr.Current); } while (arr.MoveNext()); arr.DublicateOnEvenPos(n,array); Console.ReadLine(); } } }
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Laba4 { class List<T> { class ListItem<T> { public T Data { get; set; } public ListItem<T> Next { get; set; } } private ListItem<T> first; private ListItem<T> current; public T Current { get { return current.Data; } set { if(current!=null) { current.Data=value;} } } public void Reset() { current = first; } public void AddFirst(T Data) { if (first == null) { first = new ListItem<T>() { Data = Data }; current = first; } else { ListItem<T> temp = new ListItem<T>() { Data = Data }; temp.Next = first; first = temp; } } public bool MoveNext() { if (current!=null) { current = current.Next; return current != null; } return false; } public T[] DublicateOnEvenPos(int n,T[] array) { //задаем новый массив, длиной в 2 раза больше T[] arr = new T[n * 2]; int j = 0; //Заполнение нового массива for (int i = 0; i < n; i++) { //Проверка номера элемента на четность if (i % 2 == 0) { //Заполняем новый массив arr[j] = array[i]; j++; } //Заполняем новый массив arr[j] = array[i]; j++; } n = j; //Длину старого массива делаем такой же как у нового array = arr; return array; } } }
Решение задачи: «Удвоение всех вхождений элементов, расположенных на четных (0-четное) позициях (DublicateOnEvenPos()»
textual
Листинг программы
public T[] DublicateOnEvenPos<T>(int n, T[] array) { var arr = new T[n << 1]; for (var i = 0; i < arr.Length; i += 2) { arr[i] = array[i >> 1]; arr[i + 1] = array[i >> 1]; } return arr; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д