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