2016-11-23 1 views
-2

2 차원 배열 (행렬)을 곱하고이를 행렬로 표시하는 방법을 알고 싶습니다.2 차원 배열을 일렬로 배열하는 방법

전류 출력은 정확한 결과 아니다

1 1 1 
1 1 1 
1 1 1 

이다.

코드

은 다음과 같습니다 : 당신은 잘못이 접근하고

static void Main(string[] args) 
    { 
     int[,] metrix1 = new int[3, 3] { { 2, 0, 2 }, { 0, 1, 2 }, { 1, 2, 1 } }; 
     int[,] metrix2 = new int[3, 3] { { 1, 1, 1 }, { 0, 1, 0 }, { 0, 0, 1 } }; 
     int[,] result = new int[3, 3]; 

     int m1 =0; 
     int m2 =0; 

     for (int i = 0; i < 3; i++) 
     { 
      for (int j = 0; j < 3; j++) 
      { 
       m1 = metrix1[i, j]; 

      } 
     } 

     // metrix 2 
      for (int y = 0; y < 3; y++) 
      { 
       for (int z = 0; z < 3; z++) 
       { 
        m2 = metrix2[y, z]; 
       } 
      } 
      //m 

       for (int a = 0; a < 3; a++) 
        { 

         for (int b = 0; b < 3; b++) 
         { 
         result[a, b] = m1 *m2; 
         Console.Write(result[a, b]); 

         }Console.WriteLine(); 
       }Console.ReadLine(); 

       } 
      } 
     } 
+1

사용 두 루프 – Mahi

+1

'결과의 [A, B] = m2 * M1,''m2'에 어떤'm1' 시간에 어떤마다 'result' 요소를 설정한다. 'm1'과'm2'는 양쪽 모두 배열의 마지막 요소이기 때문에'1'입니다. '// m' 라인에서 코드를 살펴 보겠습니다. 코드에서 두 개의 'for'루프를 두 번 실행하고 'm1'에 '1'을 할당 한 첫 번째 세트의 마지막 반복을 실행했습니다. , 두 번째 세트의 마지막 반복에'1'을'm2 '로하면,'result'의 모든 요소에'1 * 1 '을 지정합니다. P.s., 질문 할 때 적절한 철자법과 문법을 사용하십시오. – Quantic

답변

0

.

for (int y = 0; y < 3; y++) 
     { 
      for (int z = 0; z < 3; z++) 
      { 
       m2 = metrix2[y, z]; 
      } 
     } 

이 후, m2는 어레이 (matrix[2, 2])의 오른쪽 아래의 값을 포함 할 것이다. 당신은 말 그대로 곱셈을 위해 같은 값을 반복해서 곱합니다. 이 모든 것을 하나의 루프 for에 넣어야합니다.

또한 행렬 곱셈을 수행하는 올바른 방법이 아닙니다. 먼저 코드는 3x3 행렬에서만 작동합니다. 다른 크기의 행렬 (4x4, 5x5 등)을 가질 수있을뿐만 아니라, 행렬이 곱해질 수 있도록 정사각형 일 필요조차 없습니다 (행의 수가 1 인 경우 행의 수와 같음). 다른). 두 개의 3x3 행렬 인 경우에도 계산은 여전히 ​​잘못된 것입니다. Wikipedia에는 적절한 방법이 있습니다.

2 0 2 1 1 1 (2*1)+(0*0)+(2*0) (2*1)+(0*1)+(2*0) ... 
0 1 2 x 0 1 0 = (0*1)+(1*0)+(2*0) (0*1)(1*1)(2*0) ... 
1 2 1 0 0 1 .. 
관련 문제