Rumah >pembangunan bahagian belakang >C++ >Program C++ untuk mencetak corak bintang X

Program C++ untuk mencetak corak bintang X

PHPz
PHPzke hadapan
2023-09-13 11:45:031231semak imbas

Program C++ untuk mencetak corak bintang X

Menunjukkan pelbagai bentuk corak bintang, seperti piramid, segi empat sama dan rombus, ialah

Bahagian biasa pengaturcaraan asas dan pembangunan logik. kita menghadapi pelbagai masalah Apabila kita melihat pernyataan gelung dalam pengaturcaraan, bintang dan corak nombor terlibat. Artikel ini menunjukkan cara mencetak X atau pangkah menggunakan asterisk.

Kita akan lihat dua kaedah yang sama. Yang pertama agak rumit, tetapi yang seterusnya Kaedahnya sangat cekap.

Corak bintang (menggunakan dua set ruang)

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

Untuk mod ini, bilangan baris ialah n = 5. Ini untuk separuh teratas. Jumlah corak X ialah 2n – 1

Mari lihat cara melakukannya menggunakan jadual berikut−

Terjemahan bahasa Cina bagi ialah: Terjemahan bahasa Cina bagi ialah: Terjemahan ialah: Terjemahan ialah: Terjemahan bahasa Cina bagi ialah: Terjemahan bahasa Cina bagi ialah: Terjemahan ialah: Terjemahan bahasa Cina bagi ialah: Terjemahan bahasa Cina bagi ialah: Terjemahan ialah: diterjemahkan sebagai:
nombor talianBintang CountBilangan bintang Baki ruangSpace Between Spacing Penerangan
11 2 0 7 Apabila i = n, cetak bintang, jika tidak cetak 2. Ruang di sebelah kiri ialah (i – 1), dan ruang antara ruang ialah 2(n – i) - 1
2 211 5
3 2 2 3
44 2 3 1
551144--
6 2 3 1 Bintang di sebelah kiri semakin berkurangan, seperti n - (i - n) - 1 = 2n - i - 1. Bilangan ruang akan mengikuti: 2 * (i - n) - 1
7 2 2 3
8 211 5
99 2 0 7

Algoritma

  • Baca n sebagai input
  • Untuk julat i dari 1 hingga 2n - i, laksanakan
    • Jika saya
    • Untuk j antara 1 hingga i - 1, lakukan
      • Tunjukkan ruang kosong
    • Tamat
    • Tunjukkan bintang
    • Jika i dan n berbeza, maka
      • Untuk j antara 1 hingga 2(n - i) - 1, lakukan
        • Tunjukkan ruang kosong
      • Tamat
      • Tunjukkan bintang
    • Jika ia berakhir
  • Jika tidak
    • Untuk j antara 1 hingga 2n - i - 1, lakukan
      • Tunjukkan ruang kosong
    • Tamat
    • Tunjukkan bintang
    • Untuk j antara 1 hingga 2(i - n) - 1, lakukan
      • Tunjukkan ruang kosong
    • Tamat
    • Tunjukkan bintang
  • Jika ia berakhir
  • Alihkan kursor ke baris seterusnya
  • Tamat
  • Contoh

    #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 );
    }
    

    Output

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

    output(n=10)

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

    Gunakan kaedah grid

    Masalah yang sama boleh diselesaikan dengan mempertimbangkan grid, dan dari grid ini, kita boleh mengira Formula di mana bintang dicetak dan di mana ruang dicetak.

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

    从上面的网格中,很容易理解,星星只会在列中放置 数字与行号(对角线)相同,列号为 (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行计数。为此,我们提供了两种方法。一聘 填充和空白空间,而另一个则利用网格计算。而不是添加 空格,我们添加了点。如果没有,他们偶尔会从输出中删除空格。

    Atas ialah kandungan terperinci Program C++ untuk mencetak corak bintang X. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

    Kenyataan:
    Artikel ini dikembalikan pada:tutorialspoint.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam