Как работает этот код? - C#

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

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

Добрый день! У меня стоит подзадача - сделать 3 разные строки intовских элементов. Я написал незамысловатый код, который у меня работает не верно и я не знаю как его исправить. Вместо 3 разных строк он выдаёт 3 одинаковые. Можете пояснить мне - в чем ошибка?
namespace NQV3
{
    class Program
    {
        static void Main(string[] args)
        {
            //Создаём 3 экземпляра класса, в каждом должна быть стока из 8 элементов
            Solution work = new Solution(8);
            Solution current = new Solution(8);
            Solution best = new Solution(8);
 
            work.ToMonitor();
            current.ToMonitor();
            best.ToMonitor();
 
            Console.ReadLine();
        }    
    }
 
    public class Solution
    {
        private int[] sol;
        private int energy;
        Random rand = new Random();
 
        public int[] Sol
        {
            get { return sol; }
        }
        public int Energy
        {
            get { return energy; }
        }
 
        //Конструктор класса
        public Solution(int Max)
        {
            //Создаётся одномерная матрица
            sol = new int[Max];
            //Она же перемешивается
            sol = Tweak(sol);
 
        }
 
        //Метод перемешивания
        //Числа не должны повторяться
        public int[] Tweak(int[] sol)
        {
            //Заполняем числами от 0 до 7
            for (int i = 0; i < sol.Length; i++)
            {
                sol[i] = i;
            }
            //Берем 2 рандомных числа и меняем их местами 8 раз 
            for (int i = 0; i < sol.Length; i++)
            {
                int temp1 = rand.Next(0, sol.Length);
                int temp2 = rand.Next(0, sol.Length);
                int temp3;
                temp3 = sol[temp1];
                sol[temp1] = sol[temp2];
                sol[temp2] = temp3;
            }
            return sol;
        }
 
        //Метод вывода на экран как одномерная и как двумерная матрицы
        public void ToMonitor()
        {
            for (int i = 0; i < sol.Length; i++)
            {
                Console.Write(" {0} ", sol[i]);
            }
            Console.WriteLine("\n");
            for (int i = 0; i < sol.Length; i++)
            {
                for (int j = 0; j < sol.Length; j++)
                {
                    if (j == sol[i])
                    {
                        Console.Write("|Q|");
                    }
                    else
                    {
                        Console.Write("|0|");
                    }
                }
                Console.WriteLine("\n");
            }
        }
    }
}

Решение задачи: «Как работает этот код?»

textual
Листинг программы
Random rand = new Random(Guid.NewGuid().GetHashCode());

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


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

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

8   голосов , оценка 4.25 из 5