Пример #1
0
 public static int GetRow(StudentsClass[,] sClasses, StudentsClass sClass)
 {
     if (sClass == null)
         return -1;
     for (int rowIndex = 0; rowIndex < sClasses.GetLength(0); rowIndex++)
     {
         for (int colIndex = 0; colIndex < sClasses.GetLength(1); colIndex++)
         {
             if (sClasses[rowIndex, colIndex] == sClass)
                 return rowIndex;
         }
     }
     return -1;
 }
Пример #2
0
 public static bool LotOfClassesInWeek(int maxCountClassesInWeek, StudentsClass[,] sClasses, ISchedule schedule, StudentsClass specialClass)
 {
     int rowClass = -1;
     //если пара есть в списке "особых пар" - получаю номер строки, в которой располагаются другие "особые" пары
     if ((rowClass = GetRow(sClasses, specialClass)) != -1)
     {
         int weekCount1 = 0; //количество "особых" пар из полученной строки, поставленных на первую неделю
         int weekCount2 = 0; //количество "особых" пар из полученной строки, поставленных на вторую неделю
         for (int classIndex = 0; classIndex < sClasses.GetLength(1); classIndex++)
         {
             if (sClasses[rowClass, classIndex] == null)
                 continue;
             StudentsClassPosition? position = schedule.GetClassPosition(sClasses[rowClass, classIndex]);
             if (position.HasValue)//если пара установлена
             {
                 if (Constants.GetWeekOfClass(position.Value.Time) == 0)//если пара располагается на первой неделе
                     weekCount1++;
                 else//на второй
                     weekCount2++;
             }
         }
         if (weekCount1 > maxCountClassesInWeek || weekCount2 > maxCountClassesInWeek)
         {
             return true;
         }
     }
     return false;
 }
Пример #3
0
 public static bool LotOfClassesInDay(int maxCountClassesInDay, StudentsClass[,] sClasses, ISchedule schedule, StudentsClass specialClass)
 {
     int rowClass = -1;
     int dayOfSpecialClass = Constants.GetDayOfClass(schedule.GetClassPosition(specialClass).Value.Time);
     //если пара есть в списке "особых пар" - получаю номер строки, в которой располагаются другие "особые" пары
     if ((rowClass = GetRow(sClasses, specialClass)) != -1)
     {
         int dayCount = 0; //количество "особых" пар из полученной строки, поставленных в данный день
         for (int classIndex = 0; classIndex < sClasses.GetLength(1); classIndex++)
         {
             if (sClasses[rowClass, classIndex] == null)
                 continue;
             StudentsClassPosition? position = schedule.GetClassPosition(sClasses[rowClass, classIndex]);
             if (position.HasValue)//если пара установлена
             {
                 if (dayOfSpecialClass == Constants.GetDayOfClass(position.Value.Time))
                     dayCount++;
                 if (dayCount > maxCountClassesInDay)
                 {
                     return true;
                 }
             }
         }
     }
     return false;
 }