>  기사  >  백엔드 개발  >  C 언어로 대칭 이중 삼각형 패턴 인쇄

C 언어로 대칭 이중 삼각형 패턴 인쇄

王林
王林앞으로
2023-09-14 12:53:021384검색

C 언어로 대칭 이중 삼각형 패턴 인쇄

행 수를 고려하여 프로그램은 복잡성을 최소화하면서 대칭 이중 삼각형 패턴을 인쇄해야 합니다.

Example

Input: 5
Output:  X
          X
          O X
           O X
      X O X O X
       X O
        X O
         X
          X

전체 문제에는 3개의 서로 다른 파티션이 포함되어 있습니다. −

  • 홀수 n의 경우 위쪽 절반에 n-1 줄을 인쇄하고 짝수 n의 경우 위쪽 절반에 n-2 줄을 인쇄합니다. .

  • 가운데 줄을 인쇄하고, 홀수 n의 경우 1줄을 인쇄하고, 짝수 n의 경우 3줄을 인쇄합니다.

  • 하반부를 인쇄하세요. 홀수 n의 경우 n-1줄을 인쇄하고, 짝수 n의 경우 n-2줄을 인쇄하세요.

Algorithm

START
   STEP 1: IF (n % 2 == 0) then
      x = x - 1;
      Define p as n – 1 for spaces
      Define s = 1 for characters
   STEP 2: LOOP FOR i= 1 AND i <= (x - 1) / 2 AND i++
      LOOP FOR j = 1 AND j <= p AND j++
         PRINT SPACE
      END LOOP
      IF i % 2 != 0 then
         GOTO STEP 11 Printx(s)
      ELSE
         GOTO STEP 12 Printo(s)
      END
      PRINT NEW LINE
      INCREMENT p BY 1
      LOOP FOR j = 1 AND j <= p AND j++
         PRINT SPACE
      END LOOP
      IF i % 2 != 0 then,
         GOTO STEP 11 Printx(s)
      ELSE
         GOTO STEP 12 Printo(s)
      END IF
         PRINT NEWLINE
         DECREMENT p BY 1
         INCREMENT s BY 1
      END LOOP
   STEP 3: IF n % 2 == 0 {
      LOOP FOR i = 1 AND i <= p AND i++
         PRINT SPACE
         IF n % 4 != 0 then,
            GOTO STEP 11 Printx(n/2)
         ELSE
            GOTO STEP 12 Printo(n/2)
         END IF
         PRINT SPACE
      END IF
   STEP 4: IF n % 2 != 0 then,
      GOTO STEP
      ELSE
         IF n % 4 != 0 then,
            DIVIDE n BY 2 AND GOTO STEP 11 Printx(n/2) and Printx(n/2)
         ELSE
            DIVIDE n BY 2 AND GOTO STEP 11 Printx(n/2) and Printo(n/2)
            DIVIDE n BY 2 AND GOTO STEP
         END IF
      END IF
      PRINT NEW LINE
   STEP 5: IF n % 2 == 0 then, {
      PRINT SPACE
      DIVIDE n BY 2 AND GOTO STEP 11 Printx(n/2)
      PRINT NEWLINE
      END IF
   STEP 6: SET p = 1
   STEP 7: IF n % 2 == 0
      DECREMENT x BY 1
      SET p = 2
      END IF
   STEP 8: SET q = x / 2
   STEP 9: LOOP FOR i = 1 AND i <= x AND i++) {
      LOOP FOR j = 1 AND j <= p AND j++
         PRINT SPACE
      END FOR
      PASS q TO STEP 11 Printx(q)
      IF i % 2 == 0 THEN
         DECREMENT q BY 1
      END IF
      PRINT NEWLINE
      INCREMENT p BY 1
   END FOR
   STEP 10: PRINT NEWLINE
   STEP 11: Printx(n)
      LOOP FOR i = 1 AND i< = n AND i++
         IF i % 2 != 0 then,
            PRINT x
         ELSE
            PRINT o
      END IF
   END FOR
   STEP 12: Printo(n)
      LOOP FOR i = 1 AND i< = n AND i++
      IF i % 2 != 0 then,
         PRINT o
      ELSE
      PRINT x
STOP

Example

#include <stdio.h>
// printing alternate x o starting with x
int printx(int n) {
   int i;
   for ( i = 1; i < = n; i++) {
      if (i % 2! = 0)
         printf("x ");
      else
         printf("o ");
   }
   return 0;
}
// printing alternate x o starting with o
int printo(int n) {
   int i;
   for ( i = 1; i < = n; i++) {
      if (i % 2! = 0)
         printf("o ");
      else
         printf("x ");
   }
   return 0;
}
// To print the pattern for n
int printpattern(int n) {
   // upper half
   // n-1 lines for odd, n-2 lines for even
   int x = n;
   int i, j;
   if (n % 2 == 0)
   x = x - 1;
   // number of spaces to leave in each line
   int p = n - 1;
   // number of characters in each line
   int s = 1;
   // prints double lines in each iteration
   for ( i = 1; i < = (x - 1) / 2; i++) {
      for ( j = 1; j < = p; j++) {
         printf(" ");
      }
      if (i % 2! = 0)
         printx(s);
      else
         printo(s);
         printf("</p><p>");
         p++;
      for ( j = 1; j < = p; j++)
         printf(" ");
      if (i % 2! = 0)
         printx(s);
      else
         printo(s);
         printf("</p><p>");
         p--;
         s++;
   }
   // extra upper middle for even
   if (n % 2 == 0) {
      for ( i = 1; i < = p; i++)
         printf(" ");
      if (n % 4! = 0)
         printx(n / 2);
      else
         printo(n / 2);
         printf("</p><p>");
   }
   // middle line
   if (n % 2! = 0)
      printx(n);
   else {
      if (n % 4! = 0) {
         printx(n / 2);
         printx(n / 2);
      } else {
         printx(n / 2);
         printo(n / 2);
      }
   }
   printf("</p><p>");
   // extra lower middle for even
   if (n % 2 == 0) {
      printf(" ");
      printx(n / 2);
      printf("</p><p>");
   }
   // lower half
   p = 1;
   if (n % 2 == 0) {
      x--;
      p = 2;
   }
   int q = x / 2;
   // one line for each iteration
   for ( i = 1; i < = x; i++) {
      for (int j = 1; j < = p; j++)
         printf(" ");
         printx(q);
      if (i % 2 == 0)
         q--;
         printf("</p><p>");
         p++;
   }
   printf("</p><p>");
   return 1;
}
int main() {
   int n = 5;
   printpattern(n);
   return 0;
}

Output

위 프로그램을 실행하면 다음과 같은 출력이 생성됩니다.

rreee

위 내용은 C 언어로 대칭 이중 삼각형 패턴 인쇄의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 tutorialspoint.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제