Inhalt
Aktueller Ordner:
duesseldorfer-schuelerinventar-csharp-client/Duesk/UtilsCalculator.cs
namespace Duesk.Utils;
public static class Calculator
{
public static int[] CalculateSums(int[] items)
{
var sums = new int[7];
sums[1] = 0;
for (int i = 0; i < 10; i++) sums[1] += items[i];
sums[2] = 0;
for (int i = 10; i < 20; i++) sums[2] += items[i];
sums[3] = 0;
for (int i = 20; i < 28; i++) sums[3] += items[i];
sums[3] += items[8] + items[9];
sums[4] = 0;
for (int i = 28; i < 36; i++) sums[4] += items[i];
sums[5] = items[0] + items[1] + items[5] + items[6] + items[7] + items[8] + items[9] +
items[11] + items[12] + items[13] + items[14];
sums[6] = items[2] + items[3] + items[4] + items[8] + items[9] + items[10] + items[16] + items[17];
return sums;
}
public static int[] CalculateProfileValues(int[] sums, double[,] norm)
{
var values = new int[6];
for (int k = 1; k <= 6; k++)
{
values[k - 1] = 4;
for (int p = 0; p < 5; p++)
{
if (sums[k] < norm[k - 1, p])
{
values[k - 1] = p;
break;
}
}
}
return values;
}
public static double CalculateCorrelation(int[] seValues, int[] feValues)
{
double[] se = new double[6];
double[] fe = new double[6];
for (int i = 0; i < 6; i++)
{
se[i] = seValues[i] + 1;
fe[i] = feValues[i] + 1;
}
double seMean = se.Average();
double feMean = fe.Average();
double numerator = 0;
double seVar = 0;
double feVar = 0;
for (int i = 0; i < 6; i++)
{
double seDiff = se[i] - seMean;
double feDiff = fe[i] - feMean;
numerator += seDiff * feDiff;
seVar += seDiff * seDiff;
feVar += feDiff * feDiff;
}
if (seVar == 0 || feVar == 0) return 0;
return numerator / Math.Sqrt(seVar * feVar);
}
public static double CalculateAgreement(int[] seItems, int[] feItems)
{
int matches = 0;
for (int i = 0; i < 36; i++)
{
if (seItems[i] == feItems[i]) matches++;
}
return matches * 100.0 / 36;
}
public static string GetRating(int value)
{
return value switch
{
1 => "weit unterdurchschnittlich",
2 => "unterdurchschnittlich",
3 => "durchschnittlich",
4 => "überdurchschnittlich",
5 => "weit überdurchschnittlich",
_ => "unbekannt"
};
}
}