2012-10-28 2 views
0

안녕하세요 나는 초보 프로그래머이고 내가 C를 공부하고 나는이 운동을 통해 온 어제 공부하는 동안, 여기 간다 :문자 디자인을 그리기

나는 세 가지 매개 변수를 사용하는 프로그램을 만들어야합니다 (C, n, m) 그리고 집을 칠합니다. 첫 번째 매개 변수 (c)는 집을 형성 할 으로 문자를 설정하고 두 번째 (n)와 세 번째 (m)은 삼각형 (지붕)과 집의 사각형 의 높이를 결정합니다. 지붕을 만들 때 프로그램은 줄 1, 3에서 (2 * n +1) 문자까지 인쇄합니다. 동안 ((2n-1) * m) 직사각형이 표시됩니다. 당신은 매개 변수로 제공하는 경우 : 예를 들어 O, 2, 3, 4는

    o 
        ooo 
        ooooo 
       ooooooo 
        ooooo 
        ooooo 
        ooooo 
        ooooo 

그래서 나는 그것을 해결하기로 결정 인쇄하지만 나는이 운동에 3 시간 이상이고 난 그냥 캔트 넣어 적절한 조건을 찾을 수 "for"는 지붕을 만들려고합니다. 그래서 사각형으로 괜찮습니다. 그래서 누군가가 지붕으로 도와주고 있습니다.

+1

내 팁은 출력의 한 줄에 두 개의 루프 만드는 것입니다 할 수있는 방법이다 : 주요 공간에 대한 하나와 문자에 대한 하나. –

답변

1

최상의 솔루션이 아닐 수도 있지만 여기가

void print_house(int c, int n, int m){ 
    int line_width; 
    int max_width = 2*n +1; 
    int padding = 0; 
    int i=0,j=0,k=0; 

    //print the roof 
    for(i=0; i<= n; i++){ 
     line_width = 2*i +1; 
     padding = (max_width - line_width)/2; 

     for(k=0; k<padding; k++){ 
     printf(" "); 
     } 

     for(j=0; j< line_width; j++){ 
      printf("%c",c); 
     } 
     printf("\n"); 
    } 

    //print the rectangle 
    for(i=0;i<m;i++){ 
     printf(" "); 
     for(j=0;j< max_width -2; j++){ 
      printf("%c",c); 
     } 
     printf("\n"); 
    } 

} 
+0

정말 고마워. 나는 3 개의 루프를 사용하는 것을 생각하지 않았습니다. 나는 2로 해결하려했지만 좋은 결과가 없었습니다. – MKB

관련 문제