Дан массив ar и функция классификации – int Classification(int m, T item). Напишите процедуру HowMany - C#

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

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

Дан массив ar и функция классификации – int Classification(int m, T item). Напишите процедуру HowMany, вычисляющую целочисленный массив. Элемент этого массива с индексом k должен быть равным числу элементов вида k, содержащихся в массиве ar. Функция классификации должна передаваться процедуре HowMany в качестве параметра.
 static int k = 0;
        static int n = 0;
        static int[] item = new int[n];
        static Random r = new Random();
        static int min, max;
 
        static int Classification(int max, int[] item)
        {
            return item[k];
        }
 
        delegate int ClassificationDelegate(int max, int[] item);
 
        static int[] HowMany(ClassificationDelegate func)
        {
            int temp = 0;
            int t = 0;
            int[] ar1 = new int[max];
            for (int j = 0; j < max; j++, min++)
            {
                temp = min;
                for (int i = 0; i < n; i++)
                {
                    k = i;
                    if (temp == func(max, item))
                        t++;
                }
                ar1[j] = t;
                t = 0;
            }
            return ar1;
        }
 
        private void button_выход_Click(object sender, EventArgs e)
        {
            Close();
        }
 
        private void button_очистить_Click(object sender, EventArgs e)
        {
            textBox_максзнач.Clear();
            textBox_минзнач.Clear();
            textBox_размерностьмассива.Clear();
            textBox1.Text = null;
            textBox2.Text = null;
        }
 
        private void button_рассчитать_Click(object sender, EventArgs e)
        {
            try
            {
                n = Convert.ToInt32(textBox_размерностьмассива.Text);
                min = Convert.ToInt32(textBox_минзнач.Text);
                max = Convert.ToInt32(textBox_максзнач.Text);
 
                item = new int[n];

                for (int i = 0; i < n; i++)
                {
                    item[i] = r.Next(min, max);
                    textBox1.Text += item[i] + "    ";
                }
                ClassificationDelegate fun = Classification;
                int[] ar1 = HowMany(fun);
                foreach (int i in ar1)
                {
                    textBox2.Text += (i + " ");
                }
            }
            catch (FormatException ex)
            { MessageBox.Show(ex.Message); }
        }
Вот код. но работает криво, через раз. Помогите пожалуйста исправить. Заранее большое спасибо
Допустим у нас в массиве 1 единица, 2 двойки, 0 троек, и т.д. Как сделать так чтобы выводило 1(1) 2(2) 0(3) 1(4) и т.д

Решение задачи: «Дан массив ar и функция классификации – int Classification(int m, T item). Напишите процедуру HowMany»

textual
Листинг программы
var items = new[] { 1, 2, 3, 4, 1, 2, 3, 2, 3, 2 };
            var result = items.GroupBy(item => item)
                .Aggregate(new StringBuilder(),
                    (prev, next) => prev.Append(next.Key).AppendFormat("({0}) ", next.Count())).ToString();

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

5   голосов , оценка 4.6 из 5
Похожие ответы