> 백엔드 개발 > C++ > 본문

채워진 패턴 마스터하기: 코드 예제가 포함된 종합 가이드

WBOY
풀어 주다: 2024-07-18 21:23:21
원래의
511명이 탐색했습니다.

Mastering Filled Patterns: A Comprehensive Guide with Code Examples

C 프로그래밍에서 루프를 사용하여 다양한 채우기 패턴을 만드는 방법에 대한 종합 가이드에 오신 것을 환영합니다! 이 튜토리얼에서는 18개의 서로 다른 채워진 패턴을 그리는 방법에 대한 단계별 지침을 안내합니다. 이러한 패턴은 정사각형, 삼각형과 같은 기본 모양부터 다이아몬드, 육각형, 오각형과 같은 보다 복잡한 형태까지 다양합니다. 각 패턴은 중첩 루프를 사용하여 생성되므로 초보자가 C의 제어 구조를 연습할 수 있는 훌륭한 연습이 됩니다. 살펴보겠습니다!
GitHub 저장소에서 모든 코드를 찾을 수 있습니다.

목차

  1. 중첩 루프 소개
  2. 채워진 사각형
  3. 채워진 직각삼각형
  4. 채워진 직각 역삼각형
  5. 오른쪽으로 채워진 삼각형
  6. 채워진 오른쪽 정렬 역삼각형
  7. 채워진 오른쪽 파스칼 삼각형
  8. 채워진 왼쪽 파스칼 삼각형
  9. 채워진 정삼각형
  10. 채워진 역정삼각형
  11. 채워진 피라미드
  12. 채워진 역피라미드
  13. 채워진 다이아몬드
  14. 채워진 모래시계
  15. 채워진 마름모
  16. 채워진 평행사변형
  17. 채워진 육각형
  18. 채워진 오각형
  19. 채워진 역오각형
  20. 결론

중첩 루프 소개

패턴을 시작하기 전에 중첩 루프의 개념을 이해하는 것이 중요합니다. 중첩 루프는 다른 루프 내부의 루프입니다. 이 구조는 다차원 배열을 처리하고 패턴을 생성하는 데 특히 유용합니다. C에서 일반적인 중첩 루프 구조는 다음과 같습니다.

for (int i = 0; i < n; i++) {
    for (int j = 0; j < n; j++) {
        // Code to execute
    }
}
로그인 후 복사

채워진 사각형

설명:

  • 채워진 사각형 패턴은 만들기 가장 간단한 패턴 중 하나입니다.
  • n개의 행과 n개의 열로 구성되며, 각 셀에는 동일한 문자가 포함됩니다.
  • 두 개의 중첩 루프를 사용하여 각 행과 열을 반복하고 각 셀의 문자를 인쇄합니다.
int n = 5; // size of the square
char ch = '*';

printf("1. Filled Square:\n");
for (int i = 0; i < n; i++) {
    for (int j = 0; j < n; j++) {
        printf("%c  ", ch);
    }
    printf("\n");
}
로그인 후 복사

산출:

*  *  *  *  *  
*  *  *  *  *  
*  *  *  *  *  
*  *  *  *  *  
*  *  *  *  *  
로그인 후 복사

채워진 직각 삼각형

설명:

  • 채워진 직각 삼각형 패턴은 첫 번째 행에서 한 문자로 시작하고 각 후속 행에서 한 문자씩 증가합니다.
  • 이 패턴은 두 개의 중첩 루프를 사용하여 구현됩니다. 외부 루프는 행 수를 제어하고 내부 루프는 각 행에 인쇄되는 문자 수를 제어합니다.
printf("2. Filled Right Triangle:\n");
for (int i = 0; i < n; i++) {
    for (int j = 0; j <= i; j++) {
        printf("%c  ", ch);
    }
    printf("\n");
}
로그인 후 복사

산출:

*  
*  *  
*  *  *  
*  *  *  *  
*  *  *  *  *   
로그인 후 복사

채워진 역직각삼각형

설명:

  • 채워진 역직삼각형 패턴은 채워진 직각삼각형의 반대 패턴입니다.
  • 첫 번째 행에서는 n자로 시작하고 이후 행마다 한 자씩 감소합니다.
  • 채워진 직각 삼각형과 유사하게 이 패턴은 두 개의 중첩 루프를 사용하여 생성됩니다.
printf("3. Filled Inverted Right Triangle:\n");
for (int i = 0; i < n; i++) {
    for (int j = n; j > i; j--) {
        printf("%c  ", ch);
    }
    printf("\n");
}
로그인 후 복사

산출:

*  *  *  *  *  
*  *  *  *  
*  *  *  
*  *  
*  
로그인 후 복사

채워진 오른쪽 정렬 삼각형

설명:

  • 채워진 오른쪽 정렬 삼각형 패턴은 채워진 직각 삼각형과 유사하지만 삼각형이 오른쪽 정렬입니다.
  • 이 패턴은 각 행 앞에 공백을 추가하여 오른쪽 정렬 모양을 만들어 달성됩니다.
printf("4. Filled Right Aligned Triangle:\n");
for (int i = 0; i < n; i++) {
    for (int j = n - 1; j > i; j--) {
        printf("   ");
    }
    for (int j = 0; j <= i; j++) {
        printf("%c  ", ch);
    }
    printf("\n");
}
로그인 후 복사

산출:

            *  
         *  *  
      *  *  *  
   *  *  *  *  
*  *  *  *  * 
로그인 후 복사

채워진 오른쪽 정렬된 역삼각형

설명:

  • 채워진 오른쪽 정렬 역삼각형 패턴은 채워진 오른쪽 정렬 삼각형의 반대입니다.
  • 첫 번째 행에서 한 문자로 시작하고 다음 행마다 한 문자씩 증가하지만 삼각형은 오른쪽 정렬됩니다.
printf("5. Filled Right Aligned Inverted Triangle:\n");
for (int i = 0; i < n; i++) {
    for (int j = 1; j <= i; j++) {
        printf("   ");
    }
    for (int j = n; j > i; j--) {
        printf("%c  ", ch);
    }
    printf("\n");
}
로그인 후 복사

산출:

*  *  *  *  *  
   *  *  *  *  
      *  *  *  
         *  *  
            *  
로그인 후 복사

채워진 오른쪽 파스칼 삼각형

설명:

  • 채워진 직각삼각형 패턴은 직각삼각형과 역직각삼각형을 결합하여 파스칼 모양의 삼각형을 형성하는 패턴입니다.
  • 패턴의 전반부는 채워진 직각삼각형과 유사하고, 후반부는 채워진 역직각삼각형과 유사합니다.
printf("6. Filled Right Pascal Triangle:\n");
for (int i = 0; i < n; i++) {
    for (int j = 0; j < i + 1; j++) {
        printf("%c  ", ch);
    }
    printf("\n");
}
for (int i = 0; i < n; i++) {
    for (int j = n; j > i + 1; j--) {
        printf("%c  ", ch);
    }
    printf("\n");
}
로그인 후 복사

산출:

*  
*  *  
*  *  *  
*  *  *  *  
*  *  *  *  *  
*  *  *  *  
*  *  *  
*  *  
*    
로그인 후 복사

채워진 왼쪽 파스칼 삼각형

설명:

  • 채워진 왼쪽 파스칼 삼각형 패턴은 채워진 오른쪽 파스칼 삼각형 패턴과 유사하지만 왼쪽 정렬됩니다.
  • 패턴의 전반부는 채워진 오른쪽 정렬 삼각형과 유사하고, 후반부는 채워진 오른쪽 정렬 역삼각형과 유사합니다.
printf("7. Filled Left Pascal Triangle:\n");
for (int i = 0; i < n; i++) {
    for (int j = n - 1; j > i; j--) {
        printf("   ");
    }
    for (int j = 0; j < i + 1; j++) {
        printf("%c  ", ch);
    }
    printf("\n");
}

for (int i = 0; i < n; i++) {
    for (int j = 0; j < i + 1; j++) {
        printf("   ");
    }
    for (int j = n - 1; j > i; j--) {
        printf("%c  ", ch);
    }
    printf("\n");
}
로그인 후 복사

산출:

            *  
         *  *  
      *  *  *  
   *  *  *  *  
*  *  *  *  *  
   *  *  *  *  
      *  *  *  
         *  *  
            *   
로그인 후 복사

채워진 정삼각형

설명:

  • 채워진 정삼각형 패턴은 각 행을 중심으로 대칭 모양을 이루고 있습니다.
  • 이를 달성하기 위해 각 행 앞에 공백을 인쇄하여 문자를 중앙에 배치합니다.
printf("8. Filled Equilateral Triangle:\n");
for (int i = 0; i < n; i++) {
    for (int j = n - 1; j > i; j--) {
        printf(" ");
    }
    for (int j = 0; j <= i; j++) {
        printf("%c ", ch);
    }
    printf("\n");
}
로그인 후 복사

산출:

    * 
   * * 
  * * * 
 * * * * 
* * * * *  
로그인 후 복사

채워진 역정삼각형

설명:

  • 채워진 역정삼각형 패턴은 채워진 정삼각형의 역버전입니다.
  • 기본적으로 n자로 시작하여 중앙을 기준으로 행당 한 문자씩 감소합니다.
printf("9. Filled Inverted Equilateral Triangle:\n");
for (int i = n - 1; i >= 0; i--) {
    for (int j = n - 1; j > i; j--) {
        printf(" ");
    }
    for (int j = 0; j <= i; j++) {
        printf("%c ", ch);
    }
    printf("\n");
}
로그인 후 복사

산출:

* * * * * 
 * * * * 
  * * * 
   * * 
    *   
로그인 후 복사

채워진 피라미드

설명:

  • 채워진 피라미드 패턴은 맨 위에서 한 문자로 시작하여 한 줄에 두 문자씩 증가하여 대칭 피라미드를 형성합니다.
  • 각 행의 중앙에 공백을 사용합니다.
printf("10. Filled Pyramid:\n");
for (int i = 0; i < n; i++) {
    for (int j = n - 1; j > i; j--) {
        printf(" ");
    }
    for (int j = 0; j < (2 * i + 1); j++) {
        printf("%c", ch);
    }
    printf("\n");
}
로그인 후 복사

산출:

    *
   ***
  *****
 *******
*********  
로그인 후 복사

채워진 역피라미드

설명:

  • 채워진 역피라미드 패턴은 채워진 피라미드 패턴과 반대입니다.
  • 위쪽은 2 * n - 1자로 시작하고 중앙을 기준으로 행당 2자씩 감소합니다.
printf("11. Filled Inverted Pyramid:\n");
for (int i = n; i > 0; i--) {
    for (int j = n - i; j > 0; j--) {
        printf(" ");
    }
    for (int j = 0; j < (2 * i - 1); j++) {
        printf("%c", ch);
    }
    printf("\n");
}
로그인 후 복사

산출:

*********
 *******
  *****
   ***
    *  
로그인 후 복사

채워진 다이아몬드

설명:

  • 채워진 정삼각형과 채운 역정삼각형을 결합하여 채워진 다이아몬드 패턴을 형성합니다.
  • 대칭적인 다이아몬드 모양을 만들어줍니다.
printf("12. Filled Diamond:\n");
for (int i = 0; i < n; i++) {
    for (int j = n - 1; j > i; j--) {
        printf(" ");
    }
    for (int j = 0; j <= i; j++) {
        printf("%c ", ch);
    }
    printf("\n");
}
for (int i = 0; i < n - 1; i++) {
    for (int j = 0; j <= i; j++) {
        printf(" ");
    }
    for (int j = n - 1; j > i; j--) {
        printf("%c ", ch);
    }
    printf("\n");
}
로그인 후 복사

산출:

    * 
   * * 
  * * * 
 * * * * 
* * * * * 
 * * * * 
  * * * 
   * * 
    *  
로그인 후 복사

채워진 모래시계

설명:

  • 채워진 모래시계 패턴은 역정삼각형과 정삼각형이 결합되어 모래시계 모양을 이루고 있습니다.
  • 각 행은 공백을 추가하여 중앙에 배치됩니다.
printf("13. Filled Hourglass:\n");
for (int i = 0; i < n; i++) {
    for (int j = 0; j < i; j++) {
        printf(" ");
    }
    for (int j = 0; j < (n - i); j++) {
        printf("%c ", ch);
    }
    printf("\n");
}
for (int i = 1; i < n; i++) {
    for (int j = n - 1; j > i; j--) {
        printf(" ");
    }
    for (int j = 0; j <= i; j++) {
        printf("%c ", ch);
    }
    printf("\n");
}
로그인 후 복사

Output:

* * * * * 
 * * * * 
  * * * 
   * * 
    * 
   * * 
  * * * 
 * * * * 
* * * * *   
로그인 후 복사

Filled Rhombus

Explanation:

  • The filled rhombus pattern consists of rows where each row is shifted to the right by spaces.
  • This creates a diamond-like shape with equal length sides.
printf("14. Filled Rhombus:\n");
for (int i = 0; i < n; i++) {
    for (int j = 0; j < n - i - 1; j++) {
        printf(" ");
    }
    for (int j = 0; j < n; j++) {
        printf("%c ", ch);
    }
    printf("\n");
}
로그인 후 복사

Output:

    * * * * * 
   * * * * * 
  * * * * * 
 * * * * * 
* * * * *  
로그인 후 복사

Filled Parallelogram

Explanation:

  • The filled parallelogram pattern is created by shifting each row to the right.
  • It looks like a rectangle leaning to one side.
printf("15. Filled Parallelogram:\n");
for (int i = 0; i < n; i++) {
    for (int j = 0; j < i; j++) {
        printf(" ");
    }
    for (int j = 0; j < n * 2; j++) {
        printf("%c ", ch);
    }
    printf("\n");
}
로그인 후 복사

Output:

* * * * * * * * * * 
 * * * * * * * * * * 
  * * * * * * * * * * 
   * * * * * * * * * * 
    * * * * * * * * * *  
로그인 후 복사

Filled Hexagon

Explanation:

  • The filled hexagon pattern has a wider middle section, with each row increasing and then decreasing in width.
  • This creates a hexagonal shape.
printf("16. Filled Hexagon:\n");
for (int i = 0; i < n / 2; i++) {
    for (int j = n / 2 - i; j > 0; j--) {
        printf(" ");
    }
    for (int j = 0; j < n + 1 * i; j++) {
        printf("%c ", ch);
    }
    printf("\n");
}
for (int i = n / 2; i >= 0; i--) {
    for (int j = 0; j < n / 2 - i; j++) {
        printf(" ");
    }
    for (int j = 0; j < n + i; j++) {
        printf("%c ", ch);
    }
    printf("\n");
}
로그인 후 복사

Output:

  * * * * * 
 * * * * * * 
* * * * * * * 
 * * * * * * 
  * * * * *  
로그인 후 복사

Filled Pentagon

Explanation:

  • The filled pentagon pattern starts with one character at the top and increases, forming a wider base.
  • This creates a pentagon-like shape.
printf("17. Filled Pentagon:\n");
for (int i = 0; i < n + 1; i++) {
    for (int j = n; j > i; j--) {
        printf(" ");
    }
    for (int j = 0; j < (i + 1); j++) {
        printf(" %c", ch);
    }
    printf("\n");
}
for (int i = n / 2; i >= 0; i--) {
    for (int j = 0; j < n / 2 - i; j++) {
        printf(" ");
    }
    for (int j = 0; j < n + i; j++) {
        printf("%c ", ch);
    }
    printf("\n");
}
로그인 후 복사

Output:

      *
     * *
    * * *
   * * * *
  * * * * *
 * * * * * *
* * * * * * * 
 * * * * * * 
  * * * * *  
로그인 후 복사

Filled Inverted Pentagon

Explanation:

  • The filled inverted pentagon pattern is the inverted version of the filled pentagon.
  • It starts with the wider base and decreases, forming an inverted pentagon shape.
printf("18. Filled Inverted Pentagon:\n");
for (int i = 0; i <= n / 2; i++) {
    for (int j = 0; j < n / 2 - i; j++) {
        printf(" ");
    }
    for (int j = 0; j < n + i; j++) {
        printf("%c ", ch);
    }
    printf("\n");
}
for (int i = n + 1; i > 0; i--) {
    for (int j = n + 2; j > i; j--) {
        printf(" ");
    }
    for (int j = 0; j < i; j++) {
        printf("%c ", ch);
    }
    printf("\n");
}
로그인 후 복사

Output:

  * * * * * 
 * * * * * * 
* * * * * * * 
 * * * * * * 
  * * * * * 
   * * * * 
    * * * 
     * * 
      *   
로그인 후 복사

Conclusion

Learning to create these filled patterns in C is an excellent way to practice using nested loops and enhance your understanding of how loops work. By experimenting with different values and shapes, you can deepen your understanding of control structures in C and develop a keen eye for detail and logic. Whether you're a beginner or looking to brush up on your skills, these patterns provide a solid foundation for mastering loops in C programming.

We hope this guide has been helpful and encourages you to explore more complex patterns and designs. Happy coding!

For more tutorials and coding tips, be sure to subscribe to our blog and follow us on social media!

위 내용은 채워진 패턴 마스터하기: 코드 예제가 포함된 종합 가이드의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:dev.to
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿