2016-12-27 2 views
-6

Ich bin ein Anfänger zu C# und ich möchte Code für unscharfe Max-Min-Komposition schreiben. Ich habe ein 2D-Array für die Matrix verwendet. Das Problem, das ich habe, ist, dass die letzte Zeile und Spalte des Arrays Null sind. Während der Rest der Array-Elemente die richtige Antwort gemäß der Fuzzy-Logik hat. Die letzte Zeile und Spalte müssen dasselbe Element wie andere Elemente des Arrays haben.warum die letzte Reihe und Spalte des Arrays Null ist?

Hier ist mein Code

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

und hier ist das Ergebnis

enter image description here

kann mir helfen, warum die letzte Zeile und Spalte gleich Null ist. .thanx.
die Daten sind Zufallsdaten durch zufällige Klasse generiert ..

+4

Bitte verzichten Screenshots veröffentlichen. Zumal sie Screenshots deines * Codes * sind. Kopieren und Einfügen helfen uns, Ihre Frage zu beantworten. – RandomStranger

+2

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

+3

Ich vermute, es hat mit der Aussage 'max = Math.Max ​​(min, min);' die 'min' * zweimal * verwendet, was der Ausführung von 'max = min; 'entspricht. Und wenn 'min' gleich Null ist ... nun, los gehts. –

Antwort

0

das Problem war wirklich mit der Zeile Max = Math.Max ​​(min, min); , Ich habe es ersetzt und bekam die korrekte Ausgabe der Fuzzy-MAX_MIN Betrieb auf zwei Matrizen ..

der Code

//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; 

    } 
Verwandte Themen