Inhaltsverzeichnis
Beispiel
Algorithmus
Ausgabe
Heim Backend-Entwicklung C++ Drucken Sie ein symmetrisches Doppeldreiecksmuster in C-Sprache

Drucken Sie ein symmetrisches Doppeldreiecksmuster in C-Sprache

Sep 14, 2023 pm 12:53 PM
c语言 打印 Doppeltes Dreieck

Drucken Sie ein symmetrisches Doppeldreiecksmuster in C-Sprache

Angesichts der Anzahl der Zeilen muss das Programm ein symmetrisches Doppeldreiecksmuster mit minimaler Komplexität drucken.

Beispiel

Input: 5
Output:  X
          X
          O X
           O X
      X O X O X
       X O
        X O
         X
          X
Nach dem Login kopieren

Das gesamte Problem enthält 3 verschiedene Partitionen −

  • Für ungerades n werden n-1 Zeilen der oberen Hälfte und für gerades n n-2 Zeilen der oberen Hälfte gedruckt .

  • Drucken Sie die mittlere Zeile, für ungerades n drucken Sie 1 Zeile, für gerades n drucken Sie 3 Zeilen.

  • Drucken Sie die untere Hälfte, für ungerade n drucken Sie n-1 Zeilen, für gerade n drucken Sie n-2 Zeilen.

Algorithmus

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
Nach dem Login kopieren

Beispiel

#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;
}
Nach dem Login kopieren

Ausgabe

Wenn wir das obige Programm ausführen, generiert es die folgende Ausgabe.

      X
       X
       O X
        O X
   X O X O X
    X O
     X O
      X
       X
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonDrucken Sie ein symmetrisches Doppeldreiecksmuster in C-Sprache. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße Artikel -Tags

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Verwendung der Typedef-Struktur in der C-Sprache Verwendung der Typedef-Struktur in der C-Sprache May 09, 2024 am 10:15 AM

Verwendung der Typedef-Struktur in der C-Sprache

Der Unterschied zwischen strcpy und strcat in der C-Sprache Der Unterschied zwischen strcpy und strcat in der C-Sprache May 08, 2024 pm 01:03 PM

Der Unterschied zwischen strcpy und strcat in der C-Sprache

Was bedeutet real in der C-Sprache? Was bedeutet real in der C-Sprache? May 09, 2024 pm 12:06 PM

Was bedeutet real in der C-Sprache?

So implementieren Sie die Power-Funktion in der C-Sprache So implementieren Sie die Power-Funktion in der C-Sprache May 09, 2024 pm 11:33 PM

So implementieren Sie die Power-Funktion in der C-Sprache

Was tun, wenn in scanf in der C-Sprache ein Fehler auftritt? Was tun, wenn in scanf in der C-Sprache ein Fehler auftritt? May 09, 2024 am 11:39 AM

Was tun, wenn in scanf in der C-Sprache ein Fehler auftritt?

_komplexe Verwendung in C-Sprache _komplexe Verwendung in C-Sprache May 08, 2024 pm 01:27 PM

_komplexe Verwendung in C-Sprache

So verwenden Sie „Restrict' in der C-Sprache So verwenden Sie „Restrict' in der C-Sprache May 08, 2024 pm 01:30 PM

So verwenden Sie „Restrict' in der C-Sprache

_Was bedeutet bool in der C-Sprache? _Was bedeutet bool in der C-Sprache? May 08, 2024 pm 01:33 PM

_Was bedeutet bool in der C-Sprache?

See all articles