Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.03.2011, 23:04   #1
sergio11
Пользователь
 
Аватар для sergio11
 
Регистрация: 18.02.2010
Сообщений: 96
Счастье проблемы с кодом

неоходимо создать массив из 9 элементов. заполнить случайными числами, а после отсортировать чтобы остэлементы в единственном экземпляре.тоесть числа от 1-9 должны быть в перемешку.
на ночь глядя придумал это, но код слабо работает, что можно подредактировать или предложите новый алгоритм.

Код:
 int[] mas1 = new int[9];
            Random wer = new Random();
            bool flag=false; int t;

             for (int i = 0; i < 9; i++)
            {
              mas1[i] = wer.Next(1, 9);
            }

             for (int i = 0; i < mas1.Length; i++)
                 Console.Write(mas1[i] + " ");
             Console.WriteLine();

             do
             {
                 flag = true;
                 for (int i = 0; i < 8; i++)
                     for (int j =  1; j < 9; j++)
                     {
                         if (mas1[i] == mas1[j])
                         {
                             t = wer.Next(1, 9);
                             if (t != mas1[i])
                                 mas1[j] = j;
                             flag = false;
                         }
                     }
             }
             while (flag == true);  
            
             for (int i = 0; i < mas1.Length; i++)
                 Console.Write(mas1[i] + " ");
             Console.Read();
В принцепи, можно просто попорядку присвоить 1-9, а после перемешать, но как это сделать. В общем помогите чем можете.

Последний раз редактировалось sergio11; 05.03.2011 в 23:06.
sergio11 вне форума Ответить с цитированием
Старый 06.03.2011, 09:47   #2
sergio11
Пользователь
 
Аватар для sergio11
 
Регистрация: 18.02.2010
Сообщений: 96
По умолчанию

уже не надо
Код:
 public static void ShuffleList<T>(List<T> list)
        {
            Random rand = new Random();
            for (int i = 0; i < list.Count; i++)
            {
                T tmp = list[i];
                list.RemoveAt(i);
                list.Insert(rand.Next(0, list.Count), tmp);
            }
        }
        static void Main(string[] args)
        {
            List<int> m=new List<int>() {1,2,3,4,5,6,7,8,9};
            Random wer = new Random();
            

            foreach(int i in m)
                 Console.Write(i);
            Console.WriteLine();

            ShuffleList(m);

            foreach (int i in m)
                Console.Write(i);
            Console.WriteLine();

             Console.Read();
        }
sergio11 вне форума Ответить с цитированием
Старый 07.03.2011, 19:14   #3
sergio11
Пользователь
 
Аватар для sergio11
 
Регистрация: 18.02.2010
Сообщений: 96
По умолчанию

Всё бы хорошо, но возникла новая проблема. не могуправильно сгенерировать без повторов. следовал этому алгоритму
http://malover.ucoz.ru/sudoku/
в п.4 сказано перемешать элементы чтоб не повторялись, как это сделать?
Код HTML:
[CODE]
            Random rand = new Random();
            List<int> A = new List<int>() { 0, 0, 0 };
            List<int> B = new List<int>() { 0, 0, 0 };
            List<int> C = new List<int>() { 0, 0, 0 };         
            List<int> m = new List<int>() { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
            int k = 0; int[,] mas = new int[9, 9]; 
int[] mas1 = new int[81]; 
int[] mas2 = new int[81];
            ShuffleList(m);

            for (int i = 0; i < 3; i++)
            {
                A[i] = m[k];
                B[i] = m[k + 3];
                C[i] = m[k + 6];
                k++;
            }



            for (int j = 0; j < 9; j++)//0 строка
            {
                mas[0, j] = m[j];
                Console.Write(mas[0, j]);//выыод 0 строки
            }
            k = 0;
            for (int i = 0; i < 3; i++)//1 строка
            {
                mas[1, k] = C[i];
                mas[1, k + 3] = A[i];
                mas[1, k + 6] = B[i];
                k++;
            } Console.WriteLine();

            for (int j = 0; j < 9; j++)//вывод 1строки
                Console.Write(mas[1, j]);

            k = 0;
            for (int i = 0; i < 3; i++)//2 строка
            {
                mas[2, k] = B[i];
                mas[2, k + 3] = C[i];
                mas[2, k + 6] = A[i];
                k++;
            } Console.WriteLine();

            for (int j = 0; j < 9; j++)//вывод 2строки
                Console.Write(mas[2, j]);

            ShuffleList(A);
            ShuffleList(B);
            ShuffleList(C);
            

            k = 0;

            for (int i = 0; i < 3; i++)//3 строка
            {
                mas[3, k] = C[i];
                mas[3, k + 3] = A[i];
                mas[3, k + 6] = B[i];
                k++;
            } Console.WriteLine();

            for (int j = 0; j < 9; j++)//вывод 3строки
                Console.Write(mas[3, j]);
            k = 0;
            for (int i = 0; i < 3; i++)//4 строка
            {
                mas[4, k] = A[i];
                mas[4, k + 3] = B[i];
                mas[4, k + 6] = C[i];
                k++;
            } Console.WriteLine();

            for (int j = 0; j < 9; j++)//вывод 4строки
                Console.Write(mas[4, j]);

            k = 0;
            for (int i = 0; i < 3; i++)//5 строка
            {
                mas[5, k] = B[i];
                mas[5, k + 3] = C[i];
                mas[5, k + 6] = A[i];
                k++;
            } Console.WriteLine();

            for (int j = 0; j < 9; j++)//вывод 5строки
                Console.Write(mas[5, j]);
            

            ShuffleList(A);
            ShuffleList(B);
            ShuffleList(C);
            
            k = 0;

            for (int i = 0; i < 3; i++)//6 строка
            {
                mas[6, k] = C[i];
                mas[6, k + 3] = A[i];
                mas[6, k + 6] = B[i];
                k++;
            } Console.WriteLine();

            for (int j = 0; j < 9; j++)//вывод 6строки
                Console.Write(mas[6, j]);
            k = 0;
            for (int i = 0; i < 3; i++)//7 строка
            {
                mas[7, k] = A[i];
                mas[7, k + 3] = B[i];
                mas[7, k + 6] = C[i];
                k++;
            } Console.WriteLine();

            for (int j = 0; j < 9; j++)//вывод 7строки
                Console.Write(mas[7, j]);

            k = 0;
            for (int i = 0; i < 3; i++)//8 строка
            {
                mas[8, k] = B[i];
                mas[8, k + 3] = C[i];
                mas[8, k + 6] = A[i];
                k++;
            } Console.WriteLine();

            for (int j = 0; j < 9; j++)//вывод 8строки
                Console.Write(mas[8, j]);
            int n = 0;
            for (int i = 0; i < 9; i++)
                for (int j = 0; j < 9; j++)
                {
                    mas1[n] = mas[i, j];
                    mas2[n] = mas[i, j];
                    n++;
                }
            
                n = 0;
            foreach (Control c in this.Controls)
            {
                if (c is TextBox)
                {
                    ((TextBox)c).Text = mas1[n].ToString();
                    n++;
                }
            }
        }[/CODE]
и как можно сделать, чтобы из массива удальть элемент, к примеру под индексом i, а за место элемента оставить пустату.

Последний раз редактировалось sergio11; 07.03.2011 в 19:18.
sergio11 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблемы с хостингом или кодом gufon PHP 18 22.12.2010 20:38
Проблемы с кодом schtefan PHP 1 22.11.2010 13:46
Проблемы с кодом __Demon__ Win Api 0 13.11.2010 17:49
Проблемы с кодом в Mozilla 3 Olya_Poy HTML и CSS 7 28.08.2008 18:27