Heim  >  Artikel  >  Backend-Entwicklung  >  C++-Programm zum Drucken eines X-Sternmusters

C++-Programm zum Drucken eines X-Sternmusters

PHPz
PHPznach vorne
2023-09-13 11:45:031214Durchsuche

C++-Programm zum Drucken eines X-Sternmusters

Das Zeigen verschiedener Formen von Sternmustern, wie Pyramiden, Quadrate und Rauten, ist ein

Gemeinsame Teile der grundlegenden Programmierung und Logikentwicklung. Wir stehen vor verschiedenen Problemen Wenn wir Schleifenanweisungen in der Programmierung betrachten, sind Sterne und Zahlenmuster im Spiel. In diesem Artikel wird gezeigt, wie Sie ein X oder ein Kreuz mit einem Sternchen drucken.

Wir werden die gleichen zwei Methoden sehen. Der erste ist etwas kompliziert, aber der nächste Die Methode ist sehr effizient.

Sternmuster (mit zwei Sätzen von Leerzeichen)

*       *
 *     *
  *   *
   * *
    *
   * *
  *   *
 *     *
*       *

Für diesen Modus beträgt die Anzahl der Zeilen n = 5. Dies ist für die obere Hälfte. Die Gesamtzahl der X-Muster beträgt 2n – 1

Sehen wir uns anhand des Formulars unten an, wie das geht −

Die chinesische Übersetzung von lautet: Die chinesische Übersetzung von lautet: Die Übersetzung von ist: Die Übersetzung von ist: Die chinesische Übersetzung von ist: Die chinesische Übersetzung von lautet: Die Übersetzung von ist: Die chinesische Übersetzung von ist: Die chinesische Übersetzung von lautet: Die Übersetzung von ist: wird übersetzt als:
ZeilennummerStar CountAnzahl der Sterne Verbleibender PlatzSpace Between Abstand Beschreibung
11 2 0 7 Wenn i = n, drucken Sie einen Stern, andernfalls drucken Sie 2. Das Leerzeichen auf der linken Seite ist (i – 1) und das Leerzeichen zwischen den Leerzeichen ist 2(n – i) – 1
2 211 5
3 2 2 3
44 2 3 1
551144--
6 2 3 1 Die Sterne auf der linken Seite nehmen ab, z. B. n – (i – n) – 1 = 2n – i – 1. Die Anzahl der Leerzeichen ergibt sich aus: 2 * (i - n) - 1
7 2 2 3
8 211 5
99 2 0 7

Algorithmus

  • N als Eingabe lesen
  • Für den Bereich von i von 1 bis 2n – i führen Sie
  • aus
    • Wenn i
    • Für j im Bereich von 1 bis i - 1 gilt Folgendes:
      • Leerraum anzeigen
    • Ende
    • Sterne anzeigen
    • Wenn i und n unterschiedlich sind, dann
      • Für j im Bereich von 1 bis 2(n - i) - 1 gilt Folgendes:
        • Leerraum anzeigen
      • Ende
      • Sterne anzeigen
    • Wenn es endet
  • Sonst
    • Für j im Bereich von 1 bis 2n - i - 1 gilt Folgendes
      • Leerraum anzeigen
    • Ende
    • Sterne anzeigen
    • Für j im Bereich von 1 bis 2(i - n) - 1 gilt:
      • Leerraum anzeigen
    • Ende
    • Sterne anzeigen
  • Wenn es endet
  • Cursor zur nächsten Zeile bewegen
  • Ende
  • Beispiel

    #include <iostream>
    using namespace std;
    void solve( int n ){
       for ( int i = 1; i <= 2*n - 1; i++ ) {
          if ( i <= n ) {
             for ( int j = 1; j <= i - 1; j++ ) {
                cout << ". ";
             }
             cout << "*  ";
             if ( i != n ) {
                for ( int j = 1; j <= 2 * (n - i) - 1; j++ ) {
                   cout << "  ";
                }
                cout << "*  ";
             }
          } else {
             for ( int j = 1; j <= (2 * n) - i - 1; j++ ) {
                cout << ". ";
             }
             cout << "*  ";
             for ( int j = 1; j <= 2 * (i - n) - 1; j++ ) {
                cout << "  ";
             }
             cout << "*  ";
          }
          cout << "\n";
       }
    }
    int main(){
       int n = 8;
       cout << "X Star Pattern for " << n << " lines." << endl;
       solve( n );
    }
    

    Ausgabe

    X Star Pattern for 8 lines.
    *                            *  
    . *                        *  
    . . *                    *  
    . . . *                *  
    . . . . *            *  
    . . . . . *        *  
    . . . . . . *    *  
    . . . . . . . *  
    . . . . . . *    *  
    . . . . . *        *  
    . . . . *            *  
    . . . *                *  
    . . *                    *  
    . *                        *  
    *                            *
    

    Ausgabe(n=10)

    X Star Pattern for 10 lines.
    *                                    *  
    . *                                *  
    . . *                            *  
    . . . *                        *  
    . . . . *                    *  
    . . . . . *                *  
    . . . . . . *            *  
    . . . . . . . *        *  
    . . . . . . . . *    *  
    . . . . . . . . . *  
    . . . . . . . . *    *  
    . . . . . . . *        *  
    . . . . . . *            *  
    . . . . . *                *  
    . . . . *                    *  
    . . . *                        *  
    . . *                            *  
    . *                                *  
    *                                    *  
    

    Verwenden Sie die Rastermethode

    Das gleiche Problem kann durch die Betrachtung eines Gitters gelöst werden, und aus diesem Gitter können wir berechnen Die Formel, in der die Sterne und die Leerzeichen gedruckt werden.

    * *
    * *
    * *
    * *
    *
    * *
    * *
    * *
    * *

    从上面的网格中,很容易理解,星星只会在列中放置 数字与行号(对角线)相同,列号为 (2n + 1 – i)

    算法

    • 读取 n 作为输入
    • m = 2n - i
    • 对于从 1 到 m 的 i,执行
      • 对于 j 从 1 到 m 的范围,执行
        • 如果 j 与 i 相同或 j 与 (m + 1) - i 相同,则执行
          • 显示星星
        • 否则
          • 显示空间
        • 如果结束
      • 结束
      • 将光标移至下一行
    • 结束

    示例

    #include <iostream>
    using namespace std;
    void solve( int n ){
       int m = 2*n - 1;
       for ( int i = 1; i <= m; i++ ) {
          for ( int j = 1; j <= m; j++ ) {
             if (j == i || j == (m + 1 - i))
                cout << "* ";
             else
                cout << ". ";
          }
          cout << endl;
       }
    }
    int main(){
       int n = 6;
       cout << "X Star Pattern for " << n << " lines." << endl;
       solve( n );
    }
    

    输出

    X Star Pattern for 6 lines.
    * . . . . . . . . . * 
    . * . . . . . . . * . 
    . . * . . . . . * . . 
    . . . * . . . * . . . 
    . . . . * . * . . . . 
    . . . . . * . . . . . 
    . . . . * . * . . . . 
    . . . * . . . * . . . 
    . . * . . . . . * . . 
    . * . . . . . . . * . 
    * . . . . . . . . . * 
    

    输出(当n = 8时)

    X Star Pattern for 8 lines.
    * . . . . . . . . . . . . . * 
    . * . . . . . . . . . . . * . 
    . . * . . . . . . . . . * . . 
    . . . * . . . . . . . * . . . 
    . . . . * . . . . . * . . . . 
    . . . . . * . . . * . . . . . 
    . . . . . . * . * . . . . . . 
    . . . . . . . * . . . . . . . 
    . . . . . . * . * . . . . . . 
    . . . . . * . . . * . . . . . 
    . . . . * . . . . . * . . . . 
    . . . * . . . . . . . * . . . 
    . . * . . . . . . . . . * . . 
    . * . . . . . . . . . . . * . 
    * . . . . . . . . . . . . . * 
    

    结论

    星形模式使用简单,对于学习编程循环思想很有用。这 文章演示了如何使用 C++ 显示左和右半菱形图案 右对齐的半菱形。拍摄后,X 或十字图案将使用星号显示 考虑n行计数。为此,我们提供了两种方法。一聘 填充和空白空间,而另一个则利用网格计算。而不是添加 空格,我们添加了点。如果没有,他们偶尔会从输出中删除空格。

    Das obige ist der detaillierte Inhalt vonC++-Programm zum Drucken eines X-Sternmusters. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

    Stellungnahme:
    Dieser Artikel ist reproduziert unter:tutorialspoint.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen