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

C++-Programm zum Drucken eines X-Sternmusters

PHPz
Freigeben: 2023-09-13 11:45:03
nach vorne
1256 Leute haben es durchsucht

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)

*       *
 *     *
  *   *
   * *
    *
   * *
  *   *
 *     *
*       *
Nach dem Login kopieren

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 <= n, dann
      • 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 );
}
Nach dem Login kopieren

Ausgabe

X Star Pattern for 8 lines.
*                            *  
. *                        *  
. . *                    *  
. . . *                *  
. . . . *            *  
. . . . . *        *  
. . . . . . *    *  
. . . . . . . *  
. . . . . . *    *  
. . . . . *        *  
. . . . *            *  
. . . *                *  
. . *                    *  
. *                        *  
*                            *
Nach dem Login kopieren

Ausgabe(n=10)

X Star Pattern for 10 lines.
*                                    *  
. *                                *  
. . *                            *  
. . . *                        *  
. . . . *                    *  
. . . . . *                *  
. . . . . . *            *  
. . . . . . . *        *  
. . . . . . . . *    *  
. . . . . . . . . *  
. . . . . . . . *    *  
. . . . . . . *        *  
. . . . . . *            *  
. . . . . *                *  
. . . . *                    *  
. . . *                        *  
. . *                            *  
. *                                *  
*                                    *  
Nach dem Login kopieren

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

输出

X Star Pattern for 6 lines.
* . . . . . . . . . * 
. * . . . . . . . * . 
. . * . . . . . * . . 
. . . * . . . * . . . 
. . . . * . * . . . . 
. . . . . * . . . . . 
. . . . * . * . . . . 
. . . * . . . * . . . 
. . * . . . . . * . . 
. * . . . . . . . * . 
* . . . . . . . . . * 
Nach dem Login kopieren

输出(当n = 8时)

X Star Pattern for 8 lines.
* . . . . . . . . . . . . . * 
. * . . . . . . . . . . . * . 
. . * . . . . . . . . . * . . 
. . . * . . . . . . . * . . . 
. . . . * . . . . . * . . . . 
. . . . . * . . . * . . . . . 
. . . . . . * . * . . . . . . 
. . . . . . . * . . . . . . . 
. . . . . . * . * . . . . . . 
. . . . . * . . . * . . . . . 
. . . . * . . . . . * . . . . 
. . . * . . . . . . . * . . . 
. . * . . . . . . . . . * . . 
. * . . . . . . . . . . . * . 
* . . . . . . . . . . . . . * 
Nach dem Login kopieren

结论

星形模式使用简单,对于学习编程循环思想很有用。这 文章演示了如何使用 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!

Verwandte Etiketten:
Quelle:tutorialspoint.com
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage