Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/8: Рейтинг темы: голосов - 8, средняя оценка - 5.00
 Аватар для trembling
4 / 4 / 0
Регистрация: 28.03.2015
Сообщений: 82

Сохранения массива в коллекцию

28.03.2015, 13:35. Показов 1726. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Подскажите, как сохранить массив чисел, как отдельное значений под индексом в коллекции ( ArrayList ) ? К примеру, вот код, который написал я, но в результате, когда я вывожу содержимое коллекции в которой уже есть помещенный один массив, цикл бежит по ЭрейЛисту 4 раза, при чем он не должен генерировать новые числа, а должен вывести те четыре, которые сохранились в форме массива в него и не должны изменятся. Подскажите, где ошибка и почему он не правильно работает?

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 int[] finalPoint = new int[4];
            Random rnd = new Random();
            int[] localField = new int [4];
            ArrayList generatedPassword = new ArrayList();
            do
            {
                for (int i = 0, j = 0; i < passwordLength; i++, j++)
                {
                    finalPoint[i] = rnd.Next(0, 2);
                    localField[j] = finalPoint[i];
                }
 
                generatedPassword.AddRange(localField);
                
            }
            while (generatedPassword.Count == 15);
 
            foreach (int i in generatedPassword)
            {
                Console.WriteLine(generatedPassword[i] + " ");
            }
           
            Console.ReadLine();
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
28.03.2015, 13:35
Ответы с готовыми решениями:

Перевод из массива в коллекцию
Добрый день. Собственно САБЖ, но немного уточню. Как мне перевести содержимое массива в коллекцию стандартным способом (цикл) - знаю, я...

Добавление в коллекцию массива
всем доброго времени суток! Хочу добавить в коллекцию (желательно qlist) массив строк, но не знаю как это сделать. Помогите разобраться....

Преобразование массива в коллекцию
Как преобразовать массив (int n = new int) в коллекцию ArrayList? Пробывал ArrayList&lt;Integer&gt; = new...

9
871 / 721 / 304
Регистрация: 15.04.2013
Сообщений: 2,047
Записей в блоге: 5
28.03.2015, 13:48
trembling,
Если я вас правильно понял, то так
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
            int[] finalPoint = new int[4];
            Random rnd = new Random();
            int[] localField = new int[4];
            List<int[]> generatedPassword = new List<int[]>();
            int passwordLength = 4;
            do
            {
                for (int i = 0, j = 0; i < passwordLength; i++, j++)
                {
                    finalPoint[i] = rnd.Next(0, 2);
                    localField[j] = finalPoint[i];
                }
 
                generatedPassword.Add(localField);
 
            }
            while (generatedPassword.Count == 15);
 
            foreach (int[] i in generatedPassword)
            {
                Console.WriteLine(String.Join(" ", i));
            }
 
            Console.ReadLine();
1
 Аватар для trembling
4 / 4 / 0
Регистрация: 28.03.2015
Сообщений: 82
28.03.2015, 14:21  [ТС]
Попробовал параметризировать коллекцию и получил следующею ошибку "the non-generic type 'system.collections.arraylist' cannot be used with type arguments". Погуглил... на стековерфлоу нашел две темы, но решения так и не нашел

___
все понял. я не увидел что там List<int[]> .

Добавлено через 1 минуту
все работает, спасибо!

Добавлено через 12 минут
поменял код, на все равно результат не правильный.
в итоге надо получить 16 разных массивов с разным набором значений. а цикл до вайл пробегает один раз, при этом генерирует один массив ,а потом просто 4 раза его выводит.
и не могу понять, почему вайл выходит из цикла, если в условие указано, что пока каунт колекции не будет равен 15, цикл повторять.

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
 class Program 
    {
        static void Main(string[] args)
        {
 
            int[] finalPoint = new int[4];
            Random rnd = new Random();
            int passwordLength = 4;
            int[] localField = new int [4];
            List<int[]> generatedPassword = new List<int[]>();
            do
            {
                // Cycle where generated and saving the local code.
                for (int i = 0, j = 0; i < passwordLength; i++, j++)
                {
                    finalPoint[i] = rnd.Next(0, 2);
                    localField[j] = finalPoint[i];
                }
 
                for (int i = 0; i < localField.Length; i++)
                {
                    if (localField != finalPoint)
                    {
                        generatedPassword.Add(localField);
                    }
                }
            }
            while (generatedPassword.Count == 16);
 
            Console.WriteLine(generatedPassword.Count);
 
            Console.WriteLine();
 
            foreach(int[] i in generatedPassword) 
            {
                Console.WriteLine(String.Join(" ", i));
            }
           
            Console.ReadLine();
        }
    }
0
871 / 721 / 304
Регистрация: 15.04.2013
Сообщений: 2,047
Записей в блоге: 5
28.03.2015, 14:22
trembling,
Условие цикла не верное, должно быть так
C#
1
 while (generatedPassword.Count != 16);
1
 Аватар для trembling
4 / 4 / 0
Регистрация: 28.03.2015
Сообщений: 82
28.03.2015, 14:25  [ТС]
Интересно, теперь дублируется 16 раз один и тот же массив а новые не генерируется. Надо будет еще порыться над этим алгоритмом, но суть работы хотя бы уже правильна.
Миниатюры
Сохранения массива в коллекцию  
0
871 / 721 / 304
Регистрация: 15.04.2013
Сообщений: 2,047
Записей в блоге: 5
28.03.2015, 14:32
trembling,
Да, я тут просмотрел как-то, все дело в том что массивы ссылочные типы, вам надо каждый раз создавать новый массив и добавлять его в список
0
 Аватар для trembling
4 / 4 / 0
Регистрация: 28.03.2015
Сообщений: 82
28.03.2015, 14:36  [ТС]
Цитата Сообщение от XRoy Посмотреть сообщение
Да, я тут просмотрел как-то, все дело в том что массивы ссылочные типы, вам надо каждый раз создавать новый массив и добавлять его в список
получается надо 16 массивов? хм.. значит так не получится.
0
871 / 721 / 304
Регистрация: 15.04.2013
Сообщений: 2,047
Записей в блоге: 5
28.03.2015, 14:40
trembling,
Создавайте их или в цикле
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
            do
            {
                int[] localField = new int[4];
                // Cycle where generated and saving the local code.
                for (int i = 0, j = 0; i < passwordLength; i++, j++)
                {
                    finalPoint[i] = rnd.Next(0, 2);
                    localField[j] = finalPoint[i];
                }
 
                for (int i = 0; i < localField.Length; i++)
                {
                    if (localField != finalPoint)
                    {
                        generatedPassword.Add(localField);
                    }
                }
            }
            while (generatedPassword.Count != 16);
Или делайте копию
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
            do
            {
 
                // Cycle where generated and saving the local code.
                for (int i = 0, j = 0; i < passwordLength; i++, j++)
                {
                    finalPoint[i] = rnd.Next(0, 2);
                    localField[j] = finalPoint[i];
                }
 
                for (int i = 0; i < localField.Length; i++)
                {
                    if (localField != finalPoint)
                    {
                        generatedPassword.Add((int[]) localField.Clone());
                    }
                }
            }
            while (generatedPassword.Count != 16);
Добавлено через 54 секунды
trembling,
И у вас в этом цикле один и тот же массив добавляется 4 раза
C#
1
2
3
4
5
6
7
for (int i = 0; i < localField.Length; i++)
                {
                    if (localField != finalPoint)
                    {
                        generatedPassword.Add(localField);
                    }
                }
И совершенно не понятная мне проверка
C#
1
if (localField != finalPoint)
0
 Аватар для trembling
4 / 4 / 0
Регистрация: 28.03.2015
Сообщений: 82
28.03.2015, 14:46  [ТС]
Цитата Сообщение от XRoy Посмотреть сообщение
И совершенно не понятная мне проверка
Код C#
1
if (localField != finalPoint)
ну этой проверкой я хотел сказать, если такой массив уже существует, то не добавляй его в еррейлист, а если его еще нету то добавь, а так должно получится 16 сгенерированных вариантов. типа того)
0
871 / 721 / 304
Регистрация: 15.04.2013
Сообщений: 2,047
Записей в блоге: 5
28.03.2015, 20:35
trembling,
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
            Random rnd = new Random();
            List<int[]> generatedPassword = new List<int[]>();
            do
            {
                int[] localField = new int[4];
                // Cycle where generated and saving the local code.
                for (int i = 0, j = 0; i < 4; i++, j++)
                {
                    localField[j] = rnd.Next(0, 2);
                }
 
                if (!generatedPassword.Any(a => a.SequenceEqual(localField)))
                {
                    generatedPassword.Add(localField);
                }
            }
            while (generatedPassword.Count != 16);
 
            Console.WriteLine(generatedPassword.Count);
 
            Console.WriteLine();
 
            foreach (int[] i in generatedPassword)
            {
                Console.WriteLine(String.Join(" ", i));
            }
 
            Console.ReadLine();
или
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
        class ArrayComparer : IEqualityComparer<int[]>
        {
            public bool Equals(int[] x, int[] y)
            {
                if (x == y) return true;
                if (x == null || y == null) return false;
                if (x.Length != y.Length) return false;
                
                return x.SequenceEqual(y);
            }
 
            public int GetHashCode(int[] obj)
            {
                if (obj == null)
                {
                    return 0;
                }
 
                unchecked
                {
                    return obj.Aggregate(17, (current, element) => current * 31 + element.GetHashCode());
                }
            }
        }
 
        public static void Main(string[] args)
        {
            Random rnd = new Random();
            HashSet<int[]>generatedPassword = new HashSet<int[]>(new ArrayComparer());
            do
            {
                int[] localField = new int[4];
                // Cycle where generated and saving the local code.
                for (int i = 0, j = 0; i < 4; i++, j++)
                {
                    localField[j] = rnd.Next(0, 2);
                }
 
                generatedPassword.Add(localField);
            }
            while (generatedPassword.Count != 16);
 
            Console.WriteLine(generatedPassword.Count);
            Console.WriteLine(generatedPassword.Distinct().Count());
 
            Console.WriteLine();
 
            foreach (int[] i in generatedPassword)
            {
                Console.WriteLine(String.Join(" ", i));
            }
 
            Console.ReadLine();
        }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
28.03.2015, 20:35
Помогаю со студенческими работами здесь

Заполнить коллекцию элементами массива
//Класс колода карт class DeckCards { public Card Deck = new Card; public DeckCards() { ...

IEnumerable, сформировать коллекцию из массива
Здравствуйте, пользователи форума. Есть метод, который на вход получает коллекцию: public static VoronoiGraph...

Добавление/проверка массива в коллекцию
Доброго времени суток! Извиняюсь за два вопроса в одной теме, но мне кажется, что они очень похожи. 1) Почему проверка на наличие массива...

Элементы массива добавить в коллекцию
Добрый вечер. Есть двумерный массив, например такой int mas = { {0, 1, 1, 0, 0, 0, 0}, ...

Открытие массива с файла и сохранения массива в файл
Как открыть массив с файла(txt) ,например,и сохранить его. массив 2мерный


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru