Ранжирование ряда чисел - C#
Формулировка задачи:
Необходимо ранжировать ряд чисел (массив):
Меньшему значению начисляется ранг 1.
Наибольшему значению начисляется ранг равный количеству чисел в массиве.
Если несколько значений массива равны,им начисляется ранг равный среднему значению тех рангов, которые они получили бы, если бы не были равны.
Решение задачи: «Ранжирование ряда чисел»
textual
Листинг программы
int[] mas = { 20, 30, 0, 12, 19, 12, 3, 9, 8 };
int[] mas1 = new int[9];
Array.Copy(mas, mas1, mas.Length);
Array.Sort(mas1);
int[] rang = new int[9];
int indexrang = 1;
int count = 1;
int indexmas = 0;
int sumrang = 0;
for (int x = 0; x < 9; x++)
{
Console.Write(mas[x] + " ");
index[x] = x + 1;
if (x < 9 - 2)
{
if (mas[x] == mas1[x + 1])
{
indexmas = x;
count++;
sumrang += indexrang;
}
}
rang[x] = indexrang;
indexrang++;
}
for (int x = 0; x < 9; x++)
{
if (indexmas == mas1[x])
{
rang[x] = sumrang / count;
}
for (int y = 0; y < 9; y++)
{
if (mas[y] == mas1[x])
{
mas[y] = rang[x];
}
}
}
Console.SetCursorPosition(0, 3);
for (int x = 0; x < 9; x++)
{
Console.Write(mas[x] + " ");
}