2. 使用層級分析法選才

while (true)
{

    Console.WriteLine("輸入比值:");
    Console.Write("請輸入 專業能力 對 通識素養 的指標比值(輸入兩個數值):");
    var a = Console.ReadLine().Split(' ').Select(double.Parse).ToArray();
    Console.Write("請輸入 專業能力 對 合群性 的指標比值(輸入兩個數值):");
    var b = Console.ReadLine().Split(' ').Select(double.Parse).ToArray();
    Console.Write("請輸入 通識素養 對 合群性 的指標比值(輸入兩個數值):");
    var c = Console.ReadLine().Split(' ').Select(double.Parse).ToArray();

    var matrix = new double[3, 3];
    matrix[0, 0] = 1;
    matrix[1, 1] = 1;
    matrix[2, 2] = 1;

    matrix[1, 0] = a[0] / a[1];
    matrix[0, 1] = a[1] / a[0];

    matrix[0, 2] = b[1] / b[0];
    matrix[1, 2] = c[1] / c[0];
    matrix[2, 0] = b[0] / b[1];
    matrix[2, 1] = c[0] / b[1];
    Console.WriteLine("顯示比值矩陣:");
    for (int y = 0; y < 3; y++)
    {
        for (int x = 0; x < 3; x++)
            Console.Write($"{matrix[x, y]:f3} ");
        Console.WriteLine();
    }

    Console.Write("顯示指標的權重:");
    double[] ws = new double[3];
    for (int i = 0; i < 3; i++)
    {
        double wi = 0;

        for (int j = 0; j < 3; j++)
        {
            double z = 0;
            for (int k = 0; k < 3; k++)
            {
                z += matrix[j, k];
            }
            wi += matrix[j, i] / z;
        }

        wi /= 3;
        ws[i] = wi;

        Console.Write($"w{i + 1}: {wi:f3}  ");
    }

    var lm = ws.Select((e, i) =>
    {
        double d = 0;
        for (int j = 0; j < 3; j++) d += matrix[i, j];
        return e * d;
    }).Sum();

    var cr = (lm - 3) / ((2) * 0.58);

    Console.WriteLine();
    Console.WriteLine($"顯示LundaMax={lm:f3}");
    Console.WriteLine($"顯示一致性比率 CR={cr:f3}。{(cr < 0.1 ? "CR小於0.1,符合一致性。" : "CR不小於0.1,不符合一致性。")}");

    Console.WriteLine("繼續否?(y or n)");
    if (Console.ReadLine() == "n") break;
}

Last updated