2016-10-31 5 views
-1

2 차원 배열에서 특정 문자를 선택하고 출력을 인쇄 할 때 어떻게 표시 할 수 있습니까? 예를 들어배열의 특정 문자 선택

:

int x,y; 
char box[4][4]; 

for(x=0;x<2;x++) 
{ 
    for(y=0;y<2;y++) 
    { 
     box[x][y]='x'; 
     printf("%c",box[x][y]); 
    } 

    printf("\n"); 
} 
x의 일이 될 것이다 화면 출력을 선택

, 상단과 하단의 문자에 - 캐릭터가 선택 나타낸다. 문자를 선택하여, 위 상기 문자 아래 하이픈 (-)를 인쇄 의미 경우

enter image description here

+5

코드는 x''가득한 3 × 3 배열을 보여줍니다들 (5 × 5 배열의 모서리에 맞게), 이미지가 완전히 다른 무언가를 보여줍니다. 이것은 혼란 스럽다. – unwind

+0

@unwind 위 코드에 대한 예제 만 제공하고 있습니다. –

답변

0

는 다음의 배열의 각 요소 하이픈 위치 일부 식을 계산한다.

예 : 이제

Line 1: 
Line 2: | x | | x | | x | 
Line 3: 
Line 4: | x | | x | | x | 
Line 5: 
Line 6: | x | | x | | x | 
Line 7: 

, 당신이 알 수 있듯이,이 각 상자 앞에 빈 공간이며, 빈 줄이 하이픈을 위해 각 상자 사이에 삽입됩니다.

각 요소 [i,j]이 위치 [Line i*2, Col (j-1)*6+4]

우리가 당신이 "선택"할 가정 해 봅시다 요소 [i,j]에, 당신은 위치 [Line (i*2)-1, Col (j-1)*6+4][Line (i*2)+1, Col (j-1)*6+4]에 하이픈을 인쇄 할 필요가있다. 당신은 ij 대신에 다양한 값을 넣어 밖으로 작동하는 방법을 볼 수 있습니다

Line 1: 
Line 2: | x | | x | | x | 
Line 3:    - 
Line 4: | x | | x | | x | 
Line 5:    - 
Line 6: | x | | x | | x | 
Line 7: 

: [2,3]를 선택하려면

는 위치 [3,16][5,16]에 하이픈을 넣어.

특정 위치로 이동하려면 개행과 공백 조합을 사용할 수 있습니다. 더 명확하게 3 개의 하이픈을 인쇄 할 수도 있습니다!

이것은 아이디어를 제공하기위한 것입니다. 프로그램에서 사용하는 특정 형식의 경우 위의 방법에서 두 가지 값을 쉽게 변경할 수 있습니다.

0

당신은 이런 식으로 뭔가를 시도 할 수 있습니다 :

#include <stdio.h> 
#include <stdlib.h> 

#define ROWS 9 
#define COLS 9 

int 
main(void) { 
    int x, y, row, column; 
    char box[ROWS][COLS]; 

    printf("Enter row of box(1-4): "); 
    if (scanf("%d", &row) != 1) { 
     printf("Invalid input\n"); 
     exit(EXIT_FAILURE); 
    } 

    printf("Enter column of box(1-4): "); 
    if (scanf("%d", &column) != 1) { 
     printf("Invalid input\n"); 
     exit(EXIT_FAILURE); 
    } 

    for (x = 0; x < ROWS; x++) { 
     for (y = 0; y<COLS; y++) { 
      if (x % 2 == 0) { 
       box[x][y] = ' '; 
      } else { 
       box[x][y] = 'x'; 
      } 
     } 
    } 

    for (x = 1; x < ROWS; x+=2) { 
     for (y = 0; y < COLS; y++) { 
      if (x == (2*row-1) && y == column - 1) { 
       box[x-1][y] = '-'; 
       box[x+1][y] = '-'; 
      } 
     } 
    } 


    for (x = 0; x < ROWS; x++) { 
     for (y = 0; y < COLS; y++) { 
      if (x % 2 == 0) { 
       printf(" %c ", box[x][y]); 
      } else { 
       printf("|%c|", box[x][y]); 
      } 
     } 
     printf("\n"); 
    } 

    return 0; 
} 
+0

@ W.L이 도움을 주었습니까? – RoadRunner