2016-12-27 33 views
-6

我是C#的初学者,我想编写模糊最大 - 最小组合的代码。我用矩阵的二维数组。我遇到的问题是阵列的最后一行和一列是零。而其余的数组元素根据模糊逻辑有正确的答案。最后一行和列必须与数组的其他元素具有相同的元素。为什么数组的最后一行和一列是零?

这里是我的代码

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。
该数据是使用随机类生成的随机数据。

+4

请从截图张贴避免。特别是因为它们是* code *的截图。复制和粘贴将帮助我们回答您的问题。 – RandomStranger

+2

https://ericlippert.com/2014/03/05/how-to-debug-small-programs/ – David

+3

我猜它与语句'max = Math.Max(min,min);'它使用'min' *两次*,使它相当于'max = min;'。如果'min'等于零......那么你就去。 –

回答

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; 

    } 
相关问题