2010-07-25 4 views
2
int numbs[4][4] = 
    1, 2, 3, 4 
    5, 6, 7, 8 
    9, 10, 11, 12 
    13, 14, 15, 16; 

인쇄 할 때 다음과 같이 인쇄해야합니다.C를 사용하여 4x4 배열을 시계 방향으로 인쇄하는 방법

1 2 3 4, 8, 12, 16, 15, 14, 13, 9, 5, 6, 7, 11, 10 (즉, 시계 방향으로 나선)

---\ //first right, then down, left, up and repeat 
/-\| 
|-/| 
\--/ 
+1

문제가 무엇인지 더 구체적으로 밝히고 이미 시도한 것을 보여줄 필요가 있습니다. –

+1

무엇을 시도 했습니까? 기꺼이 도와 드리 겠지만 먼저 작업을해야합니다. –

+4

그렇다면이 질문이 진짜 질문이 아니기 때문에 왜 닫혔습니까? 무슨 일이 벌어지고 있는지 분명하게 알 수 있습니다. 나는 네가 이걸 막을 때 총을 들른 것 같아. –

답변

3

가 여기 내 찔러입니다 : : 그렇지 않으면 당신은 그냥 수행하는 코드를 작성할 수

static void Spiral(int[,] m) 
    { 
     int n = m.GetUpperBound(0); 
     for (int i = 0; i < n/2; ++i) 
     { 
      for (int j = i; j <= n - i; ++j) 
       Console.Write(m[i, j] + " "); 
      for (int j = i + 1; j <= n - i; ++j) 
       Console.Write(m[j, n - i] + " "); 
      for (int j = i + 1; j <= n - i; ++j) 
       Console.Write(m[n - i, n - j] + " "); 
      for (int j = i + 1; j < n - i; ++j) 
       Console.Write(m[n - j, i] + " "); 
     } 

     Console.Write(m[n/2, n/2]+" "); 
     if (n % 2 == 1) 
     { 
      Console.Write(m[n/2, n/2+1] + " "); 
      Console.Write(m[n/2+1, n/2+1] + " "); 
      Console.Write(m[n/2+1, n/2] + " "); 
     } 
    } 

    static void Main(string[] args) 
    { 
     int[,] myArray = new int[,]{ 
      {11, 12, 13, 14, 15}, 
      {21, 22, 23, 24, 25}, 
      {31, 32, 33, 34, 35}, 
      {41, 42, 43, 44, 45}, 
      {51, 52, 53, 54, 55} 
     }; 
     Spiral(myArray); 
    } 

을 출력은 다음과 같습니다

11 12 13 14 15 25 35 45 55 54 53 52 51 41 31 21 22 23 24 34 44 43 42 32 33 

편집 : 두도 및 크기의 이상한 작동 이제 정사각형 행렬.

+0

고마워요. –

3

이 연습을 위해 사용해야하는 특정 기술이 있습니까? 그것을

Console.WriteLine(theArray[0,0]); 
Console.WriteLine(theArray[1,0]); 
Console.WriteLine(theArray[2,0]); 
Console.WriteLine(theArray[3,0]); 
Console.WriteLine(theArray[3,1]); 
Console.WriteLine(theArray[3,2]); 
Console.WriteLine(theArray[3,3]); 
Console.WriteLine(theArray[2,3]); 
Console.WriteLine(theArray[1,3]); 
Console.WriteLine(theArray[0,3]); 
Console.WriteLine(theArray[0,2]); 
Console.WriteLine(theArray[0,1]); 
Console.WriteLine(theArray[1,1]); 
Console.WriteLine(theArray[2,1]); 
Console.WriteLine(theArray[2,2]); 
Console.WriteLine(theArray[1,2]); 
+0

이 답변에 6 표가 왜 생겼는지 궁금합니다. 분명히 질문에는 기술이 필요합니다. 누구든지 200 개의 WriteLines로 할 수 있습니다! – bits

+0

@bits : 아마도 가장 단순하고 가장 직접적인 해결책 일 것입니다. (아, 그리고 당신은 4x4 배열을 인쇄하는 데 200 줄을 필요로하지 않습니다. 단지 16 줄만 필요합니다.) – Guffa

+1

_ 적어도 최소한 해당 좌표를 루프로 처리하십시오. – Svante

관련 문제