2014-10-09 42 views
-1

我創造了這個功能做一個簡單的矩陣乘法錯誤而調用C#矩陣乘法運算功能

int[] MatrixMul(string[] input, int[,] key) 
     { 
      int[] result = new int[input.Length]; 
      for (int row = 0; row < key.GetLength(0); row++) 
      { 
       for (int col = 0; col < key.GetLength(0); col++) 
       { 
        result[row]+= key[row, col] * AtoZ.IndexOf(input[0][col]); 

       } 

      } 
      return result; 
     } 

然而,當我試圖調用它,它給了我一些錯誤:

呼叫功能:

total = MatrixMul(outPut [i],key);

錯誤1的最好重載方法匹配 'Hill_Cipher_CSharp.Hill_Cipher.MatrixMul(串[],INT [])' 具有一些無效參數C:\用戶\瓦埃勒\文件\視覺工作室2013 \項目\ Hill_Cipher_CSharp \ Hill_Cipher.cs 34 23 Hill_Cipher_CSharp

錯誤2參數1:無法從'字符串'轉換爲'string []'c:\ users \ wael \ documents \ visual studio 2013 \ Projects \ Hill_Cipher_CSharp \ Hill_Cipher.cs 34 33 Hill_Cipher_CSharp

問題是與 「產出」,這裏是輸出:

IEnumerable<string> output = Enumerable.Range(0, input.Length/key.GetLength(0)) 
    .Select(x => input.Substring(x * key.GetLength(0), key.GetLength(0))); 
      string[] outPut = output.ToArray(); 
+0

'output'和'outPut'?足以甚至沒有讓我想嘗試。但無論如何,你的錯誤是因爲'outPut'是一個'string []'類型',你試圖將'outPut [i]'(單個字符串)傳遞給一個期望得到'string []'的方法一串字符串)。幾乎完全是錯誤2告訴你的。 – itsme86 2014-10-09 03:45:07

+0

我找到了你,但我需要單獨傳遞每個字符串[i],即 即outPut [1] =「TH」; 我想傳遞這個字符串,然後處理上面提到的函數中的每個字符。 我將如何能夠做到這一點? – WT86 2014-10-09 03:50:06

+0

檢查'for(int col = 0; col ja72 2014-10-09 04:13:04

回答

0

功能應該是這樣的:

int[] MatrixMul(string input, int[,] key) 
     { 
      int[] result = new int[input.Length]; 
      for (int row = 0; row < key.GetLength(0); row++) 
      { 
       for (int col = 0; col < key.GetLength(0); col++) 
       { 
        result[row]+= key[row, col] * AtoZ.IndexOf(input[col]); 

       } 

      } 
      return result; 
     } 

調用函數:

for (int i = 0; i < outPut.Length; i++) 
      { 
       encChars = MatrixMul(outPut[i], key); 
      }