Дан массив 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();
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д