2016-12-27 73 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; 

    }