/// <summary> Проверка матрицы для алгоритма </summary> private void CheckMatrixforAghorithm() { var counter = new MatrixErrorCounter(); int amount = counter.CountOfErrorsMatrixforAlgorithm(Matrix, GivenGraph); if (amount > 0) { short k = (short)((short)amount * 3); string mistake = null; switch (amount) { case 1: mistake = "Найдена " + amount + " ошибка"; break; case 2: case 3: case 4: mistake = "Найдено " + amount + " ошибки"; break; default: mistake = "Найдено " + amount + " ошибок"; break; } if (UserActionsManager.Score > k) { UserActionsManager.RegisterMistake(mistake, k); } else if (UserActionsManager.Score > 0) { UserActionsManager.RegisterMistake(mistake, (short)UserActionsManager.Score); } } else { MessageBox.Show("Задание 1.2 пройдено.\n Вы перешли к заданию 2.\n Ознакомьтесь со справкой.<?>"); for (var i = 0; i < GivenGraph.VerticesCount; ++i) { Matrix[i].IsEnabled = false; } _task = Task.TaskSelectDomSets; } }
/// <summary> Проверка матрицы </summary> private void CheckMatrix() { var counter = new MatrixErrorCounter(); var amount = counter.CountOfErrorsMatrix(Matrix, GivenGraph); if (amount > 0) { short k = (short)((short)amount * 3); string mistake = null; switch (amount) { case 1: mistake = "Найдена " + amount + " ошибка"; break; case 2: case 3: case 4: mistake = "Найдено " + amount + " ошибки"; break; default: mistake = "Найдено " + amount + " ошибок"; break; } if (UserActionsManager.Score > k) { UserActionsManager.RegisterMistake(mistake, k); } else if (UserActionsManager.Score > 0) { UserActionsManager.RegisterMistake(mistake, (short)UserActionsManager.Score); } } else { UserActionsManager.RegisterInfo("Внешняя устойчивость. Задание выполнено, переход к следующему заданию"); MessageBox.Show("Задание 1.1 пройдено.\n Вы перешли к заданию 1.2.\n Ознакомьтесь со справкой.<?>"); _task = Task.TaskModifiedAdjMatrix; } }
private void InitToolBarCommands() { ToolBarCommands = new ObservableCollection <ToolBarCommandBase>(); // Выбор множества External stability var selectDsCommand = new ToolBarToggleCommand( () => { if (_task == Task.TaskSelectDomSets) { VertexClickCmd = new DelegateCommand( o => SelectRMouseClick((IVertex)o), o => true); _state = State.SetEs; IsMouseVerticesMovingEnabled = false; } }, () => { _state = State.Nothing; IsMouseVerticesMovingEnabled = true; }, () => _state == State.Nothing, () => true ) { Image = new BitmapImage(GetImageUri("es.png")), Description = "Выбор множества внешней устойчивости" }; // Вызов окна со справкой var helpM = new ToolBarInstantCommand( () => MessageBox.Show ( "Лабораторная работа \"Устойчивость графов \"\n " + "Задание \"Множество внешней устойчивости\"\n" + "Цель: найти число внешней устойчивости графа\n" + "\n" + "для перехода к следующему заданию нажмите ОК\n" + "Для изменения матрицы необходимо изменить значение в ячейке и нажать \"Enter\"\n" + "Либо дважды кликнуть мышью по ячейке матрицы\n" + "\n" + "Задания:\n" + "1.1 Заполнить матрицу смежности\n" + "1.2 Измените матрицу смежности под выполнение алгоритма красно-синих вершин\n" + "2.Выделите несколько доминирующих множеств графа\n (выделение множества доступно по кнопке <ES>\nзакрытие множества происходит по кнопке <{}>)\n" + "3.Определить число внешней устойчивости (пометить соответствующее множество вершин)" ), () => _state == State.Nothing ) { Image = new BitmapImage(GetImageUri("help.png")), Description = "Справка" }; // Проверка задания var checkButton = new ToolBarInstantCommand( () => { var mp = new MatrixPrinter(); var m = Matrix; switch (_task) { case Task.TaskAdjacencyMatrix: UserActionsManager.RegisterInfo("Внешняя устойчивость. Задание 1.1. На проверку отправлена матрица: " + mp.MatrixToString(m)); CheckMatrix(); break; case Task.TaskModifiedAdjMatrix: UserActionsManager.RegisterInfo("Внешняя устойчивость. Задание 1.2. На проверку отправлена матрица: " + mp.MatrixToString(m)); CheckMatrixforAghorithm(); break; case Task.TaskSelectDomSets: MessageBox.Show(string.Format( "Необходимо найти еще {0} множеств(о) внешней устойчивости", _countOfSes)); break; case Task.TaskFindMinDomSets: IsMinDS(); break; case Task.TaskEnd: UserActionsManager.ReportThatTaskFinished(); break; } }, () => _state == State.Nothing ) { Image = new BitmapImage(GetImageUri("ok.png")), Description = "Проверить матрицу" }; // Проверка множества и его сохранение var addSetofES = new ToolBarInstantCommand( () => { if (_task == Task.TaskSelectDomSets) { ValidateSet(); } }, () => _state == State.Nothing ) { Image = new BitmapImage(GetImageUri("add.png")), Description = "Добавить множество" }; // Проверка задания var debugButton = new ToolBarInstantCommand( () => { var counter = new MatrixErrorCounter(); if (_task == Task.TaskAdjacencyMatrix) { counter.FillInMatrix(Matrix, GivenGraph); } if (_task == Task.TaskModifiedAdjMatrix) { counter.ModifyMatrix(Matrix); } }, () => _state == State.Nothing ) { Image = new BitmapImage(GetImageUri("ok.png")), Description = "Автозаполнение" }; ToolBarCommands.Add(checkButton); ToolBarCommands.Add(selectDsCommand); ToolBarCommands.Add(addSetofES); ToolBarCommands.Add(helpM); //ToolBarCommands.Add(debugButton); }