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