Дан массив 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();