Mitt största problem är hur jag ska göra för att jämföra kombinationer av placeringar nu när det är olika antal på varje station. När det var 3 stationer och 3 anställda tex var det lättare, då hade jag bara en loop för varje station.
class Program
{
static void Main(string[] args)
{
//Antal personer varje avdelning rymmer
int[] pers_per_avd = new int[10];
pers_per_avd[0] = 2;
pers_per_avd[1] = 4;
pers_per_avd[2] = 6;
pers_per_avd[3] = 5;
pers_per_avd[4] = 2;
//Antal anställda totalt
int ant_pers = 19;
//Antal avdelningar
int ant_avdelningar = 5;
/*Avdelningar
0 = Avd 1
1 = Avd 2
2 = Avd 3
3 = Avd 4
4 = Avd 5
*/
string[] avdelningar = new string[] { "Avd 1", "Avd 2", "Avd 3", "Avd 4", "Avd 5" };
/*Namn
0 = Pelle
1 = Anna
2 = Mikael
3 = Sara
4 = Johan
5 = Linda
6 = Markus
*/
string[] namn = new string[] { "Pelle", "Anna", "Mikael", "Sara", "Johan", "Linda", "Markus" };
//preferenser för varje arbetare och vilka avdelningar den kan vara på
int[][] ans_pref = new int[19][];
ans_pref[0] = new int[5];
ans_pref[1] = new int[5];
ans_pref[2] = new int[5];
ans_pref[3] = new int[5];
ans_pref[4] = new int[5];
ans_pref[5] = new int[5];
ans_pref[6] = new int[5];
ans_pref[7] = new int[5];
ans_pref[8] = new int[5];
ans_pref[9] = new int[5];
ans_pref[10] = new int[5];
ans_pref[11] = new int[5];
ans_pref[12] = new int[5];
ans_pref[13] = new int[5];
ans_pref[14] = new int[5];
ans_pref[15] = new int[5];
ans_pref[16] = new int[5];
ans_pref[17] = new int[5];
ans_pref[18] = new int[5];
ans_pref[0] = new int[] { 0, 1, 1, 0, 1 };
ans_pref[1] = new int[] { 1, 0, 1, 1, 0 };
ans_pref[2] = new int[] { 1, 1, 0, 0, 0 };
ans_pref[3] = new int[] { 1, 0, 1, 1, 1 };
ans_pref[4] = new int[] { 0, 1, 1, 0, 0 };
ans_pref[5] = new int[] { 0, 0, 0, 1, 1 };
ans_pref[6] = new int[] { 0, 1, 1, 0, 1 };
ans_pref[7] = new int[] { 0, 0, 1, 1, 1 };
ans_pref[8] = new int[] { 1, 0, 0, 0, 0 };
ans_pref[9] = new int[] { 1, 0, 1, 1, 1 };
ans_pref[10] = new int[] { 1, 1, 1, 1, 0 };
ans_pref[11] = new int[] { 1, 0, 1, 1, 0 };
ans_pref[12] = new int[] { 0, 1, 1, 0, 1 };
ans_pref[13] = new int[] { 0, 0, 1, 1, 0 };
ans_pref[14] = new int[] { 1, 1, 0, 0, 0 };
ans_pref[15] = new int[] { 0, 1, 1, 1, 0 };
ans_pref[16] = new int[] { 0, 1, 1, 0, 0 };
ans_pref[17] = new int[] { 0, 0, 0, 0, 1 };
ans_pref[18] = new int[] { 1, 1, 0, 0, 1 };
//variabler för att köra for-looparna
int a;
int b = 0;
int i;
int j;
int k;
int l;
int m;
int new_i = 0;
int new_k = 0;
int new_m = 0;
//antal avdelningar totalt
int ant_avd = 5;
//räknare som finns placerad i varje loop för att presentera totalt antal kombinationer i slutet
int o = 0;
//antal avdelningar
for (i = 0; i < ant_avd; i++)
{
o++;
Console.WriteLine("[1]Avdelning: " + avdelningar[i]);
Console.WriteLine("Personer per denna avdelning: " + pers_per_avd[i] + "\n");
//Kolla antal i ans_pref med 1
for (a = 0; a <= ant_pers; a++)
{
if (ans_pref[i][i] == 1)
{
b++;
}
}
//antal personer per ovanstående avdelning
for (j = 0; j < pers_per_avd[i]; j++)
{
new_i = i + 1;
//om preferensen för arbetaren == 1, dvs kolla att arbetaren j är tillgänglig för stationen i
if (ans_pref[j][i] == 1) {
o++;
Console.WriteLine("[" + new_i + "][x][x]-Anställd ID: " + j);
}
//antal avdelningar 2
for (k = 0; k < ant_avd; k++)
{
o++;
//om avdelning inte är lika med första loopens avdelning
if (k != i)
{
Console.WriteLine("\n[2]Avdelning: " + avdelningar[k]);
Console.WriteLine("----Personer per denna avdelning: " + pers_per_avd[k]);
//antal personer per ovanstående avdelning
for (l = 0; l < pers_per_avd[k]; l++)
{
new_k = k + 1;
//om preferensen för arbetaren == 1, dvs kolla att arbetaren l är tillgänglig för stationen k
if (ans_pref[l][k] == 1)
{
o++;
Console.WriteLine("\n[" + new_i + "][" + new_k + "][x]---Anställd ID: (" + l + ")" + namn[l]);
}
//antal avdelningar 3
for (m = 0; m < ant_avd; m++)
{
o++;
//om avdelning inte är lika med andra loopens avdelning
if (m != k && m != i)
{
Console.WriteLine("\n------[3]Avdelning: " + avdelningar[m]);
Console.WriteLine("-------Personer per denna avdelning: " + pers_per_avd[m]);
//antal personer per ovanstående avdelning
for (int n = 0; n < pers_per_avd[m]; n++)
{
new_m = m + 1;
//om preferensen för arbetaren == 1, dvs kolla att arbetaren n är tillgänglig för stationen m
if (ans_pref[n][m] == 1)
{
o++;
Console.WriteLine("[" + new_i + "][" + new_k + "][" + new_m + "]-----Anställd ID: (" + n + ")" + namn[n]);
}
}
}
}
}
}
}
}
Console.WriteLine("\n" + o + " antal kombinationer!");
Console.WriteLine("\n\n");
}
Console.ReadKey();
}
}