为什么数组的最后一行和一列为零?

时间:2016-12-27 13:50:16

标签: c# arrays visual-studio-2013

我是C#的初学者,我想编写模糊max-min组合的代码。我已经使用2D数组作为矩阵。我遇到的问题是数组的最后一行和一列是零。而其余的数组元素根据模糊逻辑正确答案。最后一行和列必须与数组的其他元素具有相同的元素。

这是我的代码

public string[,] Max(string[,] matrix1, string[,] matrix2, int order)
    {
        string[,] fuzzy = new string[order, order];
        double max;
        double min;

        for (int i = 0; i < order; i++)
        {
            for (int j = 0; j < order; j++)
            {
                fuzzy[i, j] = "0.0000";

                for (int k = 0; k < order; k++)
                {
                    max = Convert.ToDouble(fuzzy[i, j]);
                    min = Math.Min(Convert.ToDouble(matrix1[i, k]), Convert.ToDouble(matrix2[k, j]));

                    //min = Math.Min(Convert.ToDouble(matrix1[i, j]), Convert.ToDouble(matrix2[i, j]));
                    max = Math.Max(min, min);
                    fuzzy[i, j] = Convert.ToString((String.Format("{0:0.0000}", max)));
                }
            }
        }
        return fuzzy;

    }

enter image description here

这是结果

enter image description here

任何人都可以帮助我为什么最后一行和一列为零。 .thanx。
数据是使用随机类生成的随机数据。

1 个答案:

答案 0 :(得分:0)

问题实际上是行max = Math.Max(min,min); ,我已经替换它并在两个矩阵上获得了模糊MAX_MIN操作的正确输出。

代码

 //Fuzzy MAX-MIN Composition Code
    public string[,] Max(string[,] matrix1, string[,] matrix2, int order)
    {
        string[,] fuzzy = new string[order, order];
        double max = 0.0000;
        double min;

        for (int i = 0; i < order; i++)
        {
            for (int j = 0; j < order; j++)
            {
                fuzzy[i, j] = "0.0000";

                for (int k = 0; k < order; k++)
                {
                    max = Convert.ToDouble(fuzzy[i, j]);
                    min = Convert.ToDouble(fuzzy[i, j]);


                    min =Math.Min(Convert.ToDouble(matrix1[i, k]), Convert.ToDouble(matrix2[k, j]));
                    if(min > max)
                    {
                        fuzzy[i, j] = Convert.ToString((String.Format("{0:0.0000}", min)));

                    }
                    else
                    {
                        fuzzy[i, j] = Convert.ToString((String.Format("{0:0.0000}", max)));
                    }


                    //max = Math.Max(0.0000, min);   

                    //fuzzy[i, j] = Convert.ToString((String.Format("{0:0.0000}", min)));
                }
            }
        }
        return fuzzy;

    }