Прошу предложить лучший вариант перебора массива - C#

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

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

Всем доброго дня, такой вопросик. есть массив
int[] array = { 1, 2, 3, 4, 5, 6, 7 };
есть цикл foreach который выводит этот массив
            foreach (var i in array)
            {
                Console.WriteLine(i);
            }
теперь вопрос, как можно в

рукопашную

изменить массив так, чтобы при передачи его

ТОЛЬКО В ЦИКЛ foreach

, он выводился задом наперед, т.е. 7,6,5,4,3,2,1 (в данном случае) т.е. нужно изменить массив до цикла foreach.
  1. вопрос имеет чисто учебный характер
  2. нельзя применять любые встроенные методы C#
  3. сортировать массив не нужно
  4. также нужно чтобы способ работал при любой длине массива с числами
  5. в качестве примера можно взять допустим и такой массив int[] array = { 65, 2, 63, 4, 9, 32, 6 };
вот код как сам реализовал, но уверен что есть способы гораздо лучше
   class Program
    {
 
        static void Main(string[] args)
        {
            int[] array = { 1, 2, 3, 4, 5, 6, 7 };
 
            Masorybka(array);
 
            foreach (var i in array)
            {
                Console.WriteLine(i);
            }
            Console.ReadLine();
        }
 
        private static void Masorybka(int[] mass)
        {
            int dlina = mass.Length - 1;
            int delta = 0;
 
            if ((dlina & 1) == 0)
            {
                for (int i = 0; i < mass.Length - 1; i++)
                {
                    if ((mass.Length - 1) / 2 <= i)
                        continue;
 
                    dlina -= delta;
                    int temp = mass[i];
                    mass[i] = mass[dlina];
                    mass[dlina] = temp;
 
                    if (i == 0)
                        delta = 1;
                }
            }
            else
            {
                for (int i = 0; i < mass.Length - 1; i++)
                {
                    if ((mass.Length - 1) / 2 + 1 <= i)
                        continue;
 
                    dlina -= delta;
 
                    int temp = mass[i];
                    mass[i] = mass[dlina];
                    mass[dlina] = temp;
 
                    if (i == 0)
                        delta = 1;
                }
            }
        }
    }
т.е. какие числа в массиве не важно, просто надо их перевернуть в обратном порядке, заранее благодарен за варианты.

Решение задачи: «Прошу предложить лучший вариант перебора массива»

textual
Листинг программы
            int[] foo = new int[] { 1, 2, 3, 4, 5, 6, 7 };
            int[] bar = new int[foo.Length];
            for (int i = 0; i < foo.Length; i++) {
                bar[i] = foo[foo.Length - i - 1];
            }
            foreach (int i in bar) {
                Console.Write("{0} ", i);
            }

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


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

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

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