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

Целочисленный массив в классе

01.08.2021, 12:08. Показов 1808. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток, всем.

Подскажите, пожалуйста: создаю класс с полем содержащим ссылку на целочисленный массив.
В конструкторе класса определяю его длину при создании объекта и заполняю массив случайными числами.
Далее создаю два объекта класса, и вывожу содержимое их массивов.
При первом запуске проги оба массива содержат разные числа.
Но при последующих они становятся одинаковыми?

Так должно быть?
Или я что-то не догоняю?))

Проблема частично решается вставкой Console.ReadLine() после создания объекта, но тем не менее...
Заранее благодарю за ответ или ссылку на ответ.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
01.08.2021, 12:08
Ответы с готовыми решениями:

Дан целочисленный массив A размера N. Переписать в новый целочисленный массив B все четные числа из исходного
Величина размерности и элементы массива вводятся через клавиатуру

Дан целочисленный массив A размера N. Переписать в новый целочисленный массив
Дан целочисленный массив A размера N. Переписать в новый целочисленный массив B того же размера вначале все элементы исходного массива с...

В одном классе нужно создать массив, а в классе program его вывести. "Не все ветви кода возвращают значение"
В одном классе нужно создать массив, а в классе program его вывести, помогите, как разобраться namespace con { class Array ...

14
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3439 / 2759 / 575
Регистрация: 04.09.2018
Сообщений: 8,679
Записей в блоге: 3
01.08.2021, 12:25
Kirill_77, код покажите.

Добавлено через 14 минут
Скорее всего, ссылки в обоих экземплярах класса указывают на один и тот же массив.
0
0 / 0 / 0
Регистрация: 01.08.2021
Сообщений: 4
01.08.2021, 12:26  [ТС]
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
class MyClass
    {
        // Поле целочисленного массива:
        public int[] nums;
 
        // Конструктор класса:
        public MyClass(int l)
        {
            // Установление длины массива:
            nums = new int[l];
 
            // Переменная случайного числа:
            Random n = new Random();
 
            // Заполнение массива случайными числами:
            for (int k = 0; k < nums.Length; k++)
            {
                nums[k] = n.Next(1, 50);
            }
        }
 
        public override String ToString()
        {
            String str = "| ";
            for (int k = 0; k < nums.Length; k++)
            {
                str += nums[k] + " | ";
            }
            return str;
        }
    }
class Program
    {
        static void Main(string[] args)
        {
            MyClass A = new MyClass(5);
            Console.WriteLine(A);
 
            Console.ReadLine(); // Если закоммить, при повторном запуске выведется одинаковые массивы
 
            MyClass B = new MyClass(5);
            Console.WriteLine(B);
 
            Console.ReadLine();
        }
    }
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3439 / 2759 / 575
Регистрация: 04.09.2018
Сообщений: 8,679
Записей в блоге: 3
01.08.2021, 12:46
Kirill_77, это Random n = new Random(); криво работает. Без строки
C#
1
Console.ReadLine(); // Если закоммить, при повторном запуске выведется одинаковые массивы
он инициируется слишком быстро, после последнего new Random(), и поэтому выдает одинаковый набор "случайных" чисел.
Такое поведение Random много где описано.

Добавлено через 41 секунду
Да, и ссылок у вас тут никаких нет.

Добавлено через 2 минуты
Делайте так:
C#
1
2
3
4
5
6
7
8
9
10
11
MyClass A = new MyClass( 5 );
            Console.WriteLine( A );
 
            //Console.ReadLine(); // Если закоммить, при повторном запуске выведется одинаковые массивы
 
            Thread.Sleep( 100 );
 
            MyClass B = new MyClass( 5 );
            Console.WriteLine( B );
 
            Console.ReadLine();
1
0 / 0 / 0
Регистрация: 01.08.2021
Сообщений: 4
01.08.2021, 13:15  [ТС]
Благодарю. С ссылками попозже разберусь.))
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18307 / 14231 / 5368
Регистрация: 17.03.2014
Сообщений: 28,903
Записей в блоге: 1
01.08.2021, 14:01
Цитата Сообщение от wizard41 Посмотреть сообщение
Делайте так:
C#
1
Thread.Sleep( 100 );
Не делайте так. Решение хоть и рабочее, но кривое. Лучше заведите себе один экземпляр Random на класс или приложение и пользуйтесь им.
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3439 / 2759 / 575
Регистрация: 04.09.2018
Сообщений: 8,679
Записей в блоге: 3
01.08.2021, 14:05
Цитата Сообщение от OwenGlendower Посмотреть сообщение
Лучше заведите себе один экземпляр Random на класс или приложение и пользуйтесь им
Этот вариант ТС нужно именно показать, а не рассказать. Поэтому я намеренно опустил этот вариант. Скорее всего, у ТС небольшая задачка про массивы, которую он забудет сразу, после того, как она так или иначе решилась.
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18307 / 14231 / 5368
Регистрация: 17.03.2014
Сообщений: 28,903
Записей в блоге: 1
01.08.2021, 14:15
Цитата Сообщение от wizard41 Посмотреть сообщение
Скорее всего, у ТС небольшая задачка про массивы, которую он забудет сразу, после того, как она так или иначе решилась.
Возможно. При этом он запомнит что ошибки можно лечить паузами. "Отличная" стратегия.

Цитата Сообщение от wizard41 Посмотреть сообщение
Этот вариант ТС нужно именно показать, а не рассказать.
Не вопрос.
Вариант раз
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
class MyClass
{
    // Переменная случайного числа:
    static Random n = new Random();
 
    // Поле целочисленного массива:
    public int[] nums;
 
    // Конструктор класса:
    public MyClass(int l)
    {
        // Установление длины массива:
        nums = new int[l];
 
        // Заполнение массива случайными числами:
        for (int k = 0; k < nums.Length; k++)
        {
            nums[k] = n.Next(1, 50);
        }
    }
 
    public override String ToString()
    {
        String str = "| ";
        for (int k = 0; k < nums.Length; k++)
        {
            str += nums[k] + " | ";
        }
        return str;
    }
}

Вариант два
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
static class StaticRandom
{
    // Переменная случайного числа:
    static Random n = new Random();
 
    public static int Next() => n.Next();
    public static int Next(int maxValue) => n.Next(maxValue);
    public static int Next(int minValue, int maxValue) => n.Next(minValue, maxValue);
}
 
class MyClass
{
    // Поле целочисленного массива:
    public int[] nums;
 
    // Конструктор класса:
    public MyClass(int l)
    {
        // Установление длины массива:
        nums = new int[l];
 
        // Заполнение массива случайными числами:
        for (int k = 0; k < nums.Length; k++)
        {
            nums[k] = StaticRandom.Next(1, 50);
        }
    }
 
    public override String ToString()
    {
        String str = "| ";
        for (int k = 0; k < nums.Length; k++)
        {
            str += nums[k] + " | ";
        }
        return str;
    }
}
4
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3439 / 2759 / 575
Регистрация: 04.09.2018
Сообщений: 8,679
Записей в блоге: 3
01.08.2021, 14:28
OwenGlendower, поймите меня правильно, я без всякого сарказма. Любой Thread.Sleep() в основном потоке - это кривое решение. Но почему-то мне показалось, что для ТС неважно как решить задачу, главное быстро и чтоб работало. И я не стал тратить время на то как "правильно".
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18307 / 14231 / 5368
Регистрация: 17.03.2014
Сообщений: 28,903
Записей в блоге: 1
01.08.2021, 14:36
wizard41, а я почему-то уверен, что советовать кривые решения не следует, не объяснив их кривизну и не упомянув более правильные решения. Как там у классиков - "Нам не дано предугадать, как слово наше отзовется". Вы даете ответ не только ТСу, но и тем безымянным пользователям попадающим на форум через поисковые системы в поисках быстрого решения. И они не будут читать всю тему, а найдут первое сообщение похожее на ответ и бездумно скопируют его.
1
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3439 / 2759 / 575
Регистрация: 04.09.2018
Сообщений: 8,679
Записей в блоге: 3
01.08.2021, 14:41
OwenGlendower, виноват, исправлюсь.
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18307 / 14231 / 5368
Регистрация: 17.03.2014
Сообщений: 28,903
Записей в блоге: 1
01.08.2021, 14:46
wizard41,
0
0 / 0 / 0
Регистрация: 01.08.2021
Сообщений: 4
01.08.2021, 20:51  [ТС]
Постараюсь не забыть.)) Задача про массив, но там можно и оставить элементы массива нулевыми. Заполнить "случайными" числами это уже моя личная заморочка.))
0
Эксперт .NET
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,575
02.08.2021, 17:49
В .NET 6 добавили свойство Random.Shared, поэтому теперь можно так
C#
1
nums[k] = Random.Shared.Next(1, 50);
Так же в класс Random были добавлены методы NextInt64 и NextSingle.
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18307 / 14231 / 5368
Регистрация: 17.03.2014
Сообщений: 28,903
Записей в блоге: 1
02.08.2021, 18:51
Someone007, интересно. А еще можно писать
C#
1
RandomNumberGenerator.GetInt32(1, 10000)
А еще начиная с .NET Core 2.1 можно писать new Random() в цикле т.к. конструктор по умолчанию генерирует случайные затравки. Только вот у ТС явно не .NET Core.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
02.08.2021, 18:51
Помогаю со студенческими работами здесь

Дан целочисленный массив A размером n. Построить массив B, содержащий элементы массива A
Дан целочисленный массив A размером n. Построить массив B, содержащий элементы массива A, стоящие в нечетных позициях. Отсортировать массив...

Ввести одномерный целочисленный массив A. Сформировать массив B, записав в него все нечетные элементы массива А, стоящих
Ввести одномерный целочисленный массив A. Сформировать массив B, записав в него все нечетные элементы массива А, стоящих после...

Дан целочисленный массив A размера N. Переписать в новый целочисленный массив B все элементы с нечетными порядковыми номерами (1, 3, …)
Дан целочисленный массив A размера N. Переписать в новый целочисленный массив B все элементы с нечетными порядковыми номерами (1, 3, …)...

Дан целочисленный массив A размера N (≤ 15). Переписать в новый целочисленный массив B все элементы с нечетными порядковыми номера-ми (1, 3, …) и выве
Дан целочисленный массив A размера N (≤ 15). Переписать в новый целочисленный массив B все элементы с нечетными порядковыми номера-ми (1,...

Создать 2 класса в 1-м классе массив из 10 чисел, а во 2-м классе массив из порядковых номеров максимального числа из 1-го массива(Если их несколько)
Создать 2 класса в 1-м классе массив из 10 чисел, а во 2-м классе массив из порядковых номеров максимального числа из 1-го массива(Если их...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru