Maison > développement back-end > C++ > Programme C++ pour imprimer un motif d'étoile X

Programme C++ pour imprimer un motif d'étoile X

PHPz
Libérer: 2023-09-13 11:45:03
avant
1236 Les gens l'ont consulté

Programme C++ pour imprimer un motif détoile X

Montrer différentes formes de motifs d'étoiles, telles que des pyramides, des carrés et des losanges, est un

Parties communes de la programmation de base et du développement logique. nous sommes confrontés à divers problèmes Lorsque nous examinons les instructions de boucle en programmation, des étoiles et des modèles numériques sont impliqués. Cet article montre comment imprimer un X ou une croix à l'aide d'un astérisque.

Nous verrons les deux mêmes méthodes. Le premier est un peu compliqué, mais le suivant La méthode est très efficace.

Motif étoile (utilisant deux ensembles d'espaces)

*       *
 *     *
  *   *
   * *
    *
   * *
  *   *
 *     *
*       *
Copier après la connexion

Pour ce mode, le nombre de lignes est n = 5. C'est pour la moitié supérieure. Le total des modèles X est 2n – 1

Voyons comment procéder en utilisant le formulaire ci-dessous−

La traduction chinoise de est : La traduction chinoise de est : La traduction de est : La traduction de est : La traduction chinoise de est : La traduction chinoise de est : La traduction de est : La traduction chinoise de est : La traduction chinoise de est : La traduction de est : se traduit par :
numéro de ligneStar CountNombre d'étoiles Espace restantSpace Between Spacing Description
11 2 0 7 Quand i = n, imprimez une étoile, sinon imprimez 2. L'espace de gauche est (i – 1) et l'espace entre les espaces est 2(n – i) - 1
2 211 5
3 2 2 3
44 2 3 1
551144--
6 2 3 1 Les étoiles de gauche sont décroissantes, comme n - (i - n) - 1 = 2n - i - 1. Le nombre d'espaces suivra : 2* (i - n) - 1
7 2 2 3
8 211 5
99 2 0 7

Algorithme

  • Lire n en entrée
  • Pour la plage de i de 1 à 2n - i, exécutez
    • Si je <= n, alors
      • Pour j allant de 1 à i - 1, faites
        • Afficher l'espace vide
      • Fin
      • Afficher les étoiles
      • Si i et n sont différents, alors
        • Pour j allant de 1 à 2(n - i) - 1, faites
          • Afficher l'espace vide
        • Fin
        • Afficher les étoiles
      • Si ça se termine
    • Sinon
      • Pour j allant de 1 à 2n - i - 1, faites
        • Afficher l'espace vide
      • Fin
      • Afficher les étoiles
      • Pour j allant de 1 à 2(i - n) - 1, faites
        • Afficher l'espace vide
      • Fin
      • Afficher les étoiles
    • Si ça se termine
    • Déplacer le curseur vers la ligne suivante
  • Fin

Exemple

#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 );
}
Copier après la connexion

Sortie

X Star Pattern for 8 lines.
*                            *  
. *                        *  
. . *                    *  
. . . *                *  
. . . . *            *  
. . . . . *        *  
. . . . . . *    *  
. . . . . . . *  
. . . . . . *    *  
. . . . . *        *  
. . . . *            *  
. . . *                *  
. . *                    *  
. *                        *  
*                            *
Copier après la connexion

sortie (n=10)

X Star Pattern for 10 lines.
*                                    *  
. *                                *  
. . *                            *  
. . . *                        *  
. . . . *                    *  
. . . . . *                *  
. . . . . . *            *  
. . . . . . . *        *  
. . . . . . . . *    *  
. . . . . . . . . *  
. . . . . . . . *    *  
. . . . . . . *        *  
. . . . . . *            *  
. . . . . *                *  
. . . . *                    *  
. . . *                        *  
. . *                            *  
. *                                *  
*                                    *  
Copier après la connexion

Utilisez la méthode de la grille

Le même problème peut être résolu en considérant une grille, et à partir de cette grille, on peut calculer La formule où les étoiles sont imprimées et où les espaces sont imprimés.

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

从上面的网格中,很容易理解,星星只会在列中放置 数字与行号(对角线)相同,列号为 (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 );
}
Copier après la connexion

输出

X Star Pattern for 6 lines.
* . . . . . . . . . * 
. * . . . . . . . * . 
. . * . . . . . * . . 
. . . * . . . * . . . 
. . . . * . * . . . . 
. . . . . * . . . . . 
. . . . * . * . . . . 
. . . * . . . * . . . 
. . * . . . . . * . . 
. * . . . . . . . * . 
* . . . . . . . . . * 
Copier après la connexion

输出(当n = 8时)

X Star Pattern for 8 lines.
* . . . . . . . . . . . . . * 
. * . . . . . . . . . . . * . 
. . * . . . . . . . . . * . . 
. . . * . . . . . . . * . . . 
. . . . * . . . . . * . . . . 
. . . . . * . . . * . . . . . 
. . . . . . * . * . . . . . . 
. . . . . . . * . . . . . . . 
. . . . . . * . * . . . . . . 
. . . . . * . . . * . . . . . 
. . . . * . . . . . * . . . . 
. . . * . . . . . . . * . . . 
. . * . . . . . . . . . * . . 
. * . . . . . . . . . . . * . 
* . . . . . . . . . . . . . * 
Copier après la connexion

结论

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

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:tutorialspoint.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal