Удвоение всех вхождений элементов, расположенных на четных (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;
        }

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


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

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

7   голосов , оценка 4 из 5
Похожие ответы