Я работаю над программой, которая назначает людей миссиям в течение дня.Мой метод не работает должным образом
В течение 8 часов я изо всех сил пытался выяснить, что случилось с моим методом. Это должен взять список имен, список миссий и счетчик 24 часов и назначить каждого человека миссии в час X. Если в этой миссии требуется более одного человека, она также попытается назначить следующий (если нет каких-либо условий, которые препятствуют тому, чтобы это лицо было назначено миссии).
После того, как все люди в списке назначены, программа должна сбросить список людей, которых нужно назначить, и начать назначать их снова.
Когда я запускаю свой код, есть только 1 раунд назначения, а остальная часть таблицы остается пустой.
Я попытался понять, что случилось с логикой, но я просто не могу, и это так РАСПРОСТРАНЯЕТСЯ !! Поэтому, пожалуйста, помогите мне!
Код:
public string[,] AssignPersonsToMission()
{
bool containCondition; // any item of Person.Conditions is in mission.Conditions?
int assignedCounter = 0; // how many people assigned to a mission at given hour
string[,] table = new string[missions.Count, 24]; // columns = missions, rows = hour of day
List<Person> personsToAssign = persons; // filling list with people to assign
List<Person> assignedPersons = new List<Person>(); // a list of people that have been assigned
for (int mission = 0; mission < missions.Count; mission++) //go throught columns
{
for (int hour = 0; hour < 24; hour++) //go through rows
{
if (personsToAssign.Count == 0) //if all the people have been assigned to missions
{
personsToAssign = persons; // refill personsToAssign list with original list of people
assignedPersons.Clear(); // reset assigned Persons list
}
assignedCounter = 0; // reset assignedCounter
foreach (Person person in personsToAssign.ToList()) //go through each person that can be assigned
{
containCondition = missions[mission].Conditions.Intersect(person.Conditions).Any(); // is there any condition in mission that the person has?
//if yes - that person cannot be assigned to the mission
if (!containCondition)
{
table[mission, hour] += person.Name + "|"; //put person in mission at a given hour
assignedPersons.Add(person); //add the person to a list of assigned people
personsToAssign.Remove(person);//remove the person from the list of people to assign
assignedCounter++;//increament how many people assigned to this mission at this hour
if (assignedCounter < missions[mission].NumOfPeople) //if not enough people have been assigned to the mission
{
continue; //go to the next person to assign
}
else { break; }//go the the next hour
}// END OF if (!containCondition)
}//END OF foreach (Person person in personsToAssign.ToList())
}//END OF for (int hour = 0; hour < 24; hour++)
}//END OF for (int mission = 0; mission < missions.Count; mission++)
return table;
}
Вам следует подумать о выборе названия, которое суммирует конкретную проблему. Чтобы другие люди могли найти ваш пост, когда они столкнулись с одной и той же проблемой. [Помощь] (http://stackoverflow.com/help/how-to-ask) здесь –
Итак, когда вы переходите к отладчику, вы не можете сказать, почему таблица не заполняется? – stuartd