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

Сформировать массив 100 целых случайных чисел в диапазоне от 0 до 9

13.03.2021, 05:22. Показов 5199. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Сформировать массив 100 целых случайных чисел в диапазоне от 0 до 9. Напечатать его. Найти и напечатать число, чаще других, встречающееся в массиве и напечатать сколько раз встречалось каждое число

Помогите решить пожалуйста!
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
13.03.2021, 05:22
Ответы с готовыми решениями:

Сформировать массив 100 целых случайных чисел в диапазоне от 0 до 9
Сформировать массив 100 целых случайных чисел в диапазоне от 0 до 9. Напечатать его. Найти и напечатать число, чаще других, встречающееся в...

Сформировать массив 100 целых случайных чисел в диапазоне от 0 до 100. Напечатать его. Все числа больше 30, но меньше 70 переписать в начало массива
Сформировать массив 100 целых случайных чисел в диапазоне от 0 до 100. Напечатать его. Все числа больше 30, но меньше 70 переписать в...

Сформировать матрицу А6×6 случайных целых чисел в диапазоне от 0 до 100
Сформировать матрицу А6×6 случайных целых чисел в диапазоне от 0 до 100. Напечатать матрицу. Все числа в каждой строке матрицы расположить...

15
 Аватар для esperanto_qun
1124 / 656 / 393
Регистрация: 28.01.2021
Сообщений: 1,336
13.03.2021, 08:38
Если просто найти часто встречающееся число:

C#
1
2
3
4
Random r = new Random();
            var array = new int[100];
            for (int i = 0; i < array.Length; i++) { array[i] = r.Next(9); }
            int number = array.Where(x => array.Count(y => x == y) > 1).Distinct().FirstOrDefault();
Если необходимо найти и другие повторяющиеся числа, то есть такое решение:

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
static void Main(string[] args)
        {
            int[] mas = new int[100];
            Random r = new Random();
            for (int i = 0; i < mas.Length; i++)
            {
                mas[i] = r.Next(9);
                Console.Write($"{mas[i]} ");
            }
            int[,] mas2 = new int[mas.Length, 2];
            bool flag = true;
            for (int i = 0; i < mas.Length; i++)
            {
                for (int j = 0; j < mas.Length; j++)
                {
                    if (mas2[j, 0] == mas[i])
                    {
                        mas2[j, 1] += 1;
                        flag = false;
                    }
                }
                if (flag) mas2[i, 0] = mas[i]; mas2[i, 1] += 1;
                flag = true;
            }
            Console.WriteLine("\n");
            int index = default;
            int min = default;
            for (int i = 0; i < mas.Length; i++)
            {
                if (min < mas2[i, 1])
                {
                    min = mas2[i, 1];
                    index = i;
                }
            }
            if (min == 1) { Console.WriteLine("Нет самого повторяющегося числа!"); }
            else { Console.WriteLine($"Самое повторяющееся число - {mas2[index, 0]}, повторяется - {min} раз."); }
            Console.WriteLine("\nВсе числа, которые повторяются: ");
            for (int i = 0; i < mas2.Length / 2; i++)
            {
                if (mas2[i, 1] >= 2)
                {
                    Console.Write(mas2[i,0]+" ");
                }
            }
            Console.Read();
        }
1
fly
 Аватар для I can
4950 / 4634 / 844
Регистрация: 13.04.2015
Сообщений: 9,816
13.03.2021, 08:47
esperanto_qun, проверял сам-то?
0
 Аватар для esperanto_qun
1124 / 656 / 393
Регистрация: 28.01.2021
Сообщений: 1,336
13.03.2021, 09:05
Так же все числа, которые повторяются больше одного раза, можно так найти:

C#
1
2
3
4
            Random r = new Random();
            var array = new int[100];
            for (int i = 0; i < array.Length; i++) { array[i] = r.Next(9); }
            int [] numbers = array.Where(x => array.Count(y => x == y) > 1).Distinct().ToArray();
I can, Да, вижу, первый вариант с LINQ, отпадает) Второй точно рабочий

Добавлено через 15 минут
Форму LINQ, которую писал вверху:

C#
1
2
3
4
Random r = new Random();
            var array = new int[100];
            for (int i = 0; i < array.Length; i++) { array[i] = r.Next(9); }
            int number = array.Where(x => array.Count(y => x == y) > 1).Distinct().FirstOrDefault();
Вместо нее, используй такой подход:

C#
1
2
3
4
5
Random r = new Random();
            var array = new int[100];
            for (int i = 0; i < array.Length; i++) { array[i] = r.Next(9); }
            var a  = array.Select(n => new { count = array.Count(num => num == n), n })
                            .OrderByDescending(arg => arg.count).FirstOrDefault();
0
fly
 Аватар для I can
4950 / 4634 / 844
Регистрация: 13.04.2015
Сообщений: 9,816
13.03.2021, 09:10
Цитата Сообщение от esperanto_qun Посмотреть сообщение
Второй точно рабочий
Ни в коем случае не ходу докопаться, но в массиве в таком случае не будет девятки
Миниатюры
Сформировать массив 100 целых случайных чисел в диапазоне от 0 до 9  
0
7 / 3 / 4
Регистрация: 30.06.2015
Сообщений: 29
13.03.2021, 09:11
Лучший ответ Сообщение было отмечено Superblur как решение

Решение

C#
1
2
3
4
5
6
7
            Random rnd = new Random();
            var arr = Enumerable.Range(1, 100).Select(s => rnd.Next(9)).ToArray();
            var group = arr.GroupBy(c => c).Select(c => new { Value = c.Key, Count = c.Count()});
            foreach(var g in group)
                Console.WriteLine($"Числов {g.Value} встречается {g.Count} раз.");
            var number = group.OrderBy(c => c.Count).Last();
            Console.WriteLine($"\nСамое часто встречаемое число : {number.Value}");
0
fly
 Аватар для I can
4950 / 4634 / 844
Регистрация: 13.04.2015
Сообщений: 9,816
13.03.2021, 09:24
Вариант попроще
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
        static void Main(string[] args)
        {
            int[] mas = new int[100];
            int[] mas2 = new int[10];
            Random r = new Random();
            for (int i = 0; i < mas.Length; i++)
            {
                mas[i] = r.Next(10);
                Console.Write($"{mas[i]} ");
            }
            for (int i = 0; i < mas.Length; i++)
            {
                mas2[mas[i]] += 1;
            }
            Console.WriteLine("\n");
            int index = 0;
            int max = 0;
            for (int i = 0; i < mas2.Length; i++)
            {
                if (max < mas2[i])
                {
                    max = mas2[i];
                    index = i;
                }
            }
             Console.WriteLine($"Самое повторяющееся число - {index}, повторяется - {max} раз.");  
             Console.Read();
        }
1
1 / 1 / 0
Регистрация: 08.11.2020
Сообщений: 78
04.02.2022, 15:23
I can, можешь объяснить как эта строчка работает? Я новичок и не совсем понимаю

mas2[mas[i]] += 1;
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3423 / 2742 / 575
Регистрация: 04.09.2018
Сообщений: 8,611
Записей в блоге: 3
04.02.2022, 15:28
Берем элемент массива mas2 по индексу, равным значению массива mas по индексу i и прибавляем к нему 1.
1
 Аватар для mirso
562 / 373 / 55
Регистрация: 05.04.2009
Сообщений: 767
04.02.2022, 23:03
Цитата Сообщение от I can Посмотреть сообщение
Вариант
Вариант с помощью Array.IndexOf
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
    Console.WriteLine("One hundred numbers less than ten.");
 
    int[] arr = new int[100];
    int[] fgr = new int[ 10];
 
    for (int i = 0; i < arr.Length; ++i)
    {
        if (i%10 == 0)
        Console.Write("\n " + (i/10).ToString() + " )"); 
 
        Console.Write("  {0}", arr[i] = new Random().Next(10));
        ++fgr[arr[i]];
    }
 
    Console.WriteLine("\n\nThe most repeated number is {0}, it repeats {1} times.", Array.IndexOf(fgr, fgr.Max()), fgr.Max() );
One hundred numbers less than ten.

0 ) 0 8 7 5 6 4 6 2 5 1
1 ) 6 7 6 1 5 1 1 6 3 3
2 ) 6 7 5 1 7 7 4 2 0 8
3 ) 3 4 9 5 8 0 6 8 7 8
4 ) 5 9 1 9 3 6 9 1 6 3
5 ) 2 0 3 5 1 3 1 8 0 0
6 ) 9 9 4 0 3 0 3 7 1 8
7 ) 8 7 5 8 9 0 6 1 3 0
8 ) 7 3 8 0 7 2 1 6 1 3
9 ) 9 3 8 0 2 6 2 2 3 3

The most repeated number is 3, it repeats 15 times.
1
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3423 / 2742 / 575
Регистрация: 04.09.2018
Сообщений: 8,611
Записей в блоге: 3
04.02.2022, 23:46
I can, esperanto_qun, ну вы угараете )
C#
1
2
3
4
5
6
7
8
9
10
11
12
            Random Rnd = new();
            int[] arr = Enumerable.Range( 0, 100 ).Select( v => Rnd.Next( 0, 10 ) ).ToArray();
            Console.Write( string.Join( " ", arr ) );
            Console.WriteLine();
 
            var result = arr.GroupBy( v => v )
                           .Select( g => new { g.Key, Repeat = g.Count() } )
                           .OrderByDescending( e => e.Repeat )
                           .First();
 
            Console.WriteLine( result );
            Console.ReadKey();
Code
1
2
1 3 1 0 2 1 3 6 9 4 7 3 8 1 6 4 5 3 2 4 5 2 7 8 7 0 6 9 1 4 8 2 3 9 1 2 3 5 7 0 0 5 5 6 7 9 2 8 2 5 8 6 1 5 5 9 6 3 2 2 4 4 5 4 5 5 0 9 0 4 1 9 5 2 3 0 7 1 0 8 7 8 6 5 6 1 0 7 3 2 5 0 3 4 5 6 9 0 0 2
{ Key = 5, Repeat = 15 }
Добавлено через 2 минуты
ChrisV3,
C#
1
rnd.Next(9)
в этом случае числа 9 никогда не будет.
3
29 / 17 / 13
Регистрация: 16.11.2021
Сообщений: 81
05.02.2022, 08:30
Цитата Сообщение от Superblur Посмотреть сообщение
Сформировать массив 100 целых случайных чисел в диапазоне от 0 до 9
Написал код для решения задачи, так сказать изобретая велосипед, используя только понятие массива и человеческую логику
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
using System;
 
namespace Array_without
{
    class Program
    {
        static void Main(string[] args)
        {
         
            Random rand = new Random(); // для генерации элементов
           
            int[] arr = new int[100]; // массив
            for (int i = 0; i < 100; i++)  { arr[i] = rand.Next(0, 10);} //заполнение массива
 
            Console.WriteLine("Вывод массива ");
            for (int i = 0; i < 100; i++)
            { Console.Write($"{arr[i]}  "); if ((i + 1) % 10 == 0) Console.Write("\n"); }  // вывод массива
 
            int[] count = new int[100]; //массив счетчиков
            for (int i = 0; i < 100; i++) { count[i] = 0; } //обнулили счетчики
            for (int i = 0; i < 100; i++)
            {
                int tmp = arr[i];
 
     for (int j = 0; j < 100; j++) if (arr[j] == tmp) count[i]++; //заполнили массив счетчиков значениями сколько раз повторы
            }
 
            int indmax=0, max = -32767; 
            int indmin=0, min = 32768;
            Console.WriteLine("Вывод массива счетчиков");
 
            for (int i = 0; i < 100; i++)
                {
                if (max < count[i]) { max = count[i]; indmax = i; }
                if (min > count[i]) { min = count[i]; indmin = i; }
                Console.Write($"{count[i]}  "); if ((i + 1) % 10 == 0) Console.Write("\n"); } // вывод массива
 
            Console.WriteLine($"Самое частое число в массиве {arr[indmax]}  - {max} раз встречается\n " +
                $"самое редкое число в массиве {arr[indmin]} - { min} раз встречается ");
 
            Console.ReadKey();
 
        }
    }
}

Может кому поможет это код.
Надеюсь не сильно засоряю форум.

После этого легче разобрался с логикой работы предложенных алгоритмов
wizard41, отдельное спасибо. Ответ помог разобраться в организации работы не только с массивами и методами.
0
2810 / 1679 / 885
Регистрация: 14.04.2015
Сообщений: 5,723
05.02.2022, 12:33
NeLirik, не рассматривал другие варианты, но в Вашем достаточно много лишнего кода, и оформление не по канонам.
1. Циклы по массивам от 0 до размерности массива, без использования статических цифр
2. Ни к чему создавать массивы размерами, которые будут не заполнены до конца (массив счётчиков в данном случае)
3. Для заполнения массива счётчиков избыточный алгоритм.
4. Для вывода максимального и минимального перебор по переменным.
5. По заданию требуется вывести число, встречающееся больше всего раз, у Вас этого не реализовано, так же нет вывода количества повторений для каждого числа.
6. Возьмите за привычку писать код, соблюдая табуляцию, это куда проще сопровождать и читать (тем более, что vs сама это делает), так же использовать фигурные скобки так, где нужно, у Вас много где их нет. К чему эти упрощения?
Взял Ваш вариант за основу.
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
Random rand = new Random();
 
int[] arr = new int[20];
 
for (int i = 0; i < arr.Length; i++)
{
    arr[i] = rand.Next(0, 10);
}
Console.WriteLine("Вывод массива ");
 
for (int i = 0; i < arr.Length; i++)
{
    Console.Write($"{arr[i]}  ");
} 
int[] count = new int[10];
 
for (int i = 0; i < arr.Length; i++)
{
    count[arr[i]]++;
}
Console.WriteLine();
 
int max = int.MinValue;
 
for (int i = 0; i < count.Length; i++)
{
    if(count[i] > max)
    {
        max = count[i];
    }
    Console.WriteLine($"Число {i} встречается {count[i]} раз(-а)");
}
Console.WriteLine("Числа, встречающиеся чаще других: ");
 
for (int i = 0; i < count.Length; i++)
{
    if(count[i] == max)
    {
        Console.Write($"{i} ");
    } 
}
Console.Write($"в количестве {max} раз(-а)");
0
 Аватар для Voronkin
469 / 296 / 166
Регистрация: 18.03.2018
Сообщений: 960
05.02.2022, 13:00
Самое повторяющееся число можно найти одной строкой
C#
1
2
var num = array.GroupBy(x => x).OrderByDescending(x => x.Count()).FirstOrDefault();
Console.WriteLine($"Чаще всего встречается {num.Key}, {num.Count()} раз");
Вывести, сколько раз встречается каждое число, как на мой взгляд самый простой вариант
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
        static void Main(string[] args)
        {
            int[] array = new int[100];
            Random random = new Random();
            for (int i = 0; i < array.Length; i++)array[i]=random.Next(0,10);
            Console.WriteLine(String.Join(" ",array));
            Array.Sort(array);
 
            int count = 1;
            for (int i = 0; i < array.Length-1; i++)
            {
                if(array[i]==array[i+1])count++;
                else
                {
                    Console.WriteLine($"Число {array[i]} встречается {count} раз");
                    count = 1;
                }
            }
           // считаем самое повторяющееся
           // var num = array.GroupBy(x => x).OrderByDescending(x => x.Count()).FirstOrDefault();
           // Console.WriteLine($"Чаще всего встречается {num.Key}, {num.Count()} раз");
            Console.ReadKey();
        }
Но, вероятно, ответ не всегда будет верен, так как не обрабатывается вариант, когда несколько чисел встречаются одинаково максимально много раз в массиве
0
29 / 17 / 13
Регистрация: 16.11.2021
Сообщений: 81
05.02.2022, 15:42
Цитата Сообщение от AndreyVorobey Посмотреть сообщение
но в Вашем достаточно много лишнего кода, и оформление не по канонам.
Спасибо, за уделенное время. К сожалению, канонов действительно не знаю, так как учусь несистемно, и не по образовательным программам, а так просто перевожу старые программы на C# и то больше для души.
Порекомендуйте, где системно изложены каноны. а то в книге Пахомова Б. "C# для начинающих", до сих пор применяются вместе слова методы и функции.
Рекомендации принимаю с благодарностью.
Инициализация массива 0 перед использованием, да здесь это избыточно, но на производственных блоках и системах наведения это еще требуется военной приемкой. В голове до сих пор диапазон -32768 до 32767, а подсказка типа int.MinValue мне оказалась очень полезной,

Поясните, пожалуйста, что неправильно в логике работы программы.
Ведь я предложил универсальный более общий алгоритм, который может использован для не для этого типа массивов.
Цитата Сообщение от Superblur Посмотреть сообщение
Сформировать массив 100 целых случайных чисел в диапазоне от 0 до 9.
C#
1
2
int[] arr = new int[100]; // массив
 for (int i = 0; i < 100; i++)  { arr[i] = rand.Next(0, 10);} //заполнение массива


Про напечатать вообще с форматированием реализовано.
C#
1
2
3
Console.WriteLine("Вывод массива ");
            for (int i = 0; i < 100; i++)
            { Console.Write($"{arr[i]}  "); if ((i + 1) % 10 == 0) Console.Write("\n"); }  // вывод массива

Цитата Сообщение от Superblur Посмотреть сообщение
Найти и напечатать число, чаще других, встречающееся в массиве
Для этого и создан массив счетчиков, он заполняется числами, которые являются частотами повторения чисел, основного массива, и находятся на том же месте, где что и запрашиваемые числа. (Вывод массива счетчиков избыточен, но просто я для себя его выводил, но там как раз и указана частота повторения всех чисел).
Как и все до меня я ограничился выводом, чаще всего повторяющегося числа и реже всего повторяющегося числа. Так, что это не поиски максимума и минимума исходного массива.

Цитата Сообщение от NeLirik Посмотреть сообщение
Console.WriteLine($"Самое частое число в массиве {arr[indmax]}  - {max} раз встречается\n " +
                $"самое редкое число в массиве {arr[indmin]} - { min} раз встречается ");

Просто алгоритм использования счетчиков типа count[arr[i]]++ или mas2[mas[i]] += 1 или ++fgr[arr[i]]; не сразу в голову приходит.

Возьму в дальнейшем за правило, начну хотя бы с малого
!!!Циклы по массивам от 0 до размерности массива, без использования статических цифр!!!

А вот по фигурным скобкам, как всегда пока до очередной ошибки при отладке ленюсь ставить.
0
 Аватар для Kazbek17
1484 / 939 / 454
Регистрация: 06.02.2012
Сообщений: 2,868
05.02.2022, 17:01
Цитата Сообщение от Voronkin Посмотреть сообщение
Самое повторяющееся число можно найти одной строкой
Можно еще и так.
C#
1
2
3
var num = array.GroupBy(x => x).MaxBy(x => x.Count())
//или
var num = array.ToLookup(x => x).MaxBy(x => x.Count());
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
05.02.2022, 17:01
Помогаю со студенческими работами здесь

Сформировать массив 30 целых случайных чисел в диапазоне от минус 40 до 40
Сформировать массив 30 целых случайных чисел в диапазоне от минус 40 до 40. Напечатать его. Все отрицательные числа поместить в начало...

Сформировать массив 25 целых случайных чисел диапазоне от минус 40 до 60
сформировать массив 25 целых случайных чисел диапазоне от минус 40 до 60. Напечатать его.Найти 3 мах числа и поместить их в начало массива...

Сформировать массив 100 целых случайных чисел
Сформировать массив 100 целых случайных чисел в диапазоне от 0 до 9. Напечатать его. Найти и напечатать число, чаще других, встречающееся в...

Сформировать массив 100 целых случайных чисел в диапазоне от 0 до 9. Напечатать его
Сформировать массив 100 целых случайных чисел в диапазоне от 0 до 9. Напечатать его. Определить сколько раз в массиве представлено каждое...

Сформировать массив 100 целых случайных чисел в диапазоне от 0 до 9
Сформировать массив 100 целых случайных чисел в диапазоне от 0 до 9. Напечатать его. Найти и напечатать число, чаще других, встречающееся в...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru