public static void FillOptionsCompares(AnalyticHierarchyManager.AnalyticHierarchyManager ahm) { for (int criteria = 0; criteria < ahm.NumCriteria; criteria++) { ahm.OptionsList.Add(new System.Collections.Generic.List <PairComparison>()); for (int expert = 0; expert < ahm.NumExpert; expert++) { Console.Clear(); PrintLogo(); PrintScale(); PrintOpts(); ahm.OptionsList[criteria].Add(new PairComparison(ahm.NumOptions)); Console.WriteLine("Отвечает эксперт №{0}", expert + 1); for (int i = 0; i < ahm.NumOptions - 1; i++) { for (int j = i + 1; j < ahm.NumOptions; j++) { Console.WriteLine("Насколько {0} у {1} лучше, чем у {2}?", ahm.CriteriaData[criteria], ahm.OptionsData[i], ahm.OptionsData[j]); double value = Convert.ToDouble(Console.ReadLine()); ahm.OptionsList[criteria][expert].AddElement(i, j, value); } } } } }
public static void Main(string[] args) { int numExperts = 3; int numCriterias = 4; int numOptions = 3; AnalyticHierarchyManager.AnalyticHierarchyManager ahm = new AnalyticHierarchyManager.AnalyticHierarchyManager { NumExpert = numExperts, NumCriteria = numCriterias }; ahm.CriteriaData.Add("Диагональ"); ahm.CriteriaData.Add("Разрешение"); ahm.CriteriaData.Add("Производитель"); ahm.CriteriaData.Add("Цена"); //test data //ahm.CriteriaData.Add("A"); //ahm.CriteriaData.Add("B"); //ahm.CriteriaData.Add("C"); //ahm.CriteriaData.Add("D"); ahm.NumOptions = numOptions; ahm.OptionsData.Add("Samsung"); ahm.OptionsData.Add("LG"); ahm.OptionsData.Add("Sony"); //FillCriteriasCompares(ahm); //FillOptionsCompares(ahm); //PrintResult(ahm); bool reInput; do { reInput = false; FillCriteriasCompares(ahm); FillOptionsCompares(ahm); try { PrintResult(ahm); } catch (Exception e) { Console.WriteLine("В ответах экспертов обнаружены противоречия. Требуется ввести данные заново.\nНажмите Enter для повторного ввода.\nНажмите q для выхода из программы."); if (Console.ReadLine() != "q") { reInput = true; } else { Console.Clear(); Console.WriteLine("Программа завершена"); } } }while (reInput); }
public static void FillCriteriasCompares(AnalyticHierarchyManager.AnalyticHierarchyManager ahm) { for (int expert = 0; expert < ahm.NumExpert; expert++) { ahm.PairComparisonList.Add(new PairComparison(ahm.NumCriteria)); Console.Clear(); PrintLogo(); PrintScale(); Console.WriteLine("Отвечает эксперт №{0}", expert + 1); for (int i = 0; i < ahm.NumCriteria - 1; i++) { for (int j = i + 1; j < ahm.NumCriteria; j++) { Console.WriteLine("Насколько {0} важнее, чем {1}?", ahm.CriteriaData[i], ahm.CriteriaData[j]); double value = Convert.ToDouble(Console.ReadLine()); ahm.PairComparisonList[expert].AddElement(i, j, value); } } Console.Clear(); } }
public static void PrintResult(AnalyticHierarchyManager.AnalyticHierarchyManager ahm) { Console.Clear(); PrintLogo(); Console.WriteLine($"Ваш выбор - {ahm.OptionsData[ahm.Process()]}"); //ahm.OptionsList[ahm.Process()] }