C++
 Computer >> コンピューター >  >> プログラミング >> C++

C++で無表情な顔(*_*)のパターンを出力するプログラム


数値 n が与えられたとき、n 行までの「無表情な顔(Expressionless Face)」パターンを作成して表示するのが課題です。無表情な顔は特殊文字を組み合わせて表現され、その見た目は「*_*」のようになります。

このパターンでは、行ごとに星(*)とアンダースコア(_)の個数が変化することで、左右対称の顔のような模様が浮かび上がります。ネストしたループ処理の練習問題としても最適です。

入力:n = 6
出力:

C++で無表情な顔(*_*)のパターンを出力するプログラム

入力:n = 8
出力:

C++で無表情な顔(*_*)のパターンを出力するプログラム

アルゴリズム

パターン生成の手順は以下の通りです。

開始
ステップ 1-> 関数 print_stars(int i) の中で
  j = 1 から j <= i まで j を 1 ずつ増やしながらループ
  「*」を出力する
ステップ 2-> 関数 print_pattern(int rows) の中で
  i = 1 から i <= rows まで i を 1 ずつ増やしながらループ
    print_stars(i) を呼び出す
    「_」を出力する
    print_stars(rows - i + 1) を呼び出す
    「_」を出力する
    print_stars(rows - i + 1) を呼び出す
    「_」を出力する
    print_stars(i) を呼び出す
  改行を出力する
ステップ 3-> 関数 int main() の中で
  rows = 8 を宣言して設定する
  print_pattern(rows) を呼び出す
終了

実装例

#include <bits/stdc++.h>
using namespace std;
// 星(*)を出力する関数
void print_stars(int i) {
    for (int j = 1; j <= i; j++)
    cout << "*";
}
// パターン全体を出力する関数
void print_pattern(int rows) {
    for (int i = 1; i <= rows; i++) {
        print_stars(i);
        cout << "_";
        print_stars(rows - i + 1);
        cout << "_";
        print_stars(rows - i + 1);
        cout << "_";
        print_stars(i);
        cout << endl;
    }
}
int main() {
    int rows = 8;
    print_pattern(rows);
    return 0;
}

コードのポイント

  • print_stars 関数:引数で指定された回数だけ「*」を連続出力する補助関数です。
  • print_pattern 関数:各行について「増加する星 → アンダースコア → 減少する星」という構成を繰り返し、左右対称のパターンを作ります。
  • rows - i + 1:行番号 i が進むにつれて中央部分の星の数が減っていくことで、顔の輪郭のような形状が生まれます。

出力

C++で無表情な顔(*_*)のパターンを出力するプログラム

上記のコードを実行すると、8 行分の無表情な顔パターンがコンソールに出力されます。変数 rows の値を変更すれば、任意の行数のパターンを簡単に生成できます。


  1. C++でピラミッドの体積を計算するプログラムの作り方|底面の形状別の公式と実装例

    ピラミッドの底面の種類に応じた辺の長さが与えられたとき、そのピラミッドの体積を計算するのが本記事のテーマです。 ピラミッドとは、外側の面がすべて三角形で構成され、それらが共通の一点(頂点)で交わることで鋭い角を形成する3次元図形です。ピラミッドの体積は、底面がどのような形状であるかによって異なります。 ピラミッドの底面にはさまざまな種類があり、代表的なものは以下の通りです。 底面の形状別の体積の求め方 三角形の底面(三角錐) 底面が三角形の場合、ピラミッドの体積は次の公式で求められます。 体積 = (1/6) × a × b × h 正方形の底面(四角錐) 底面が正方形の場合、ピラミッドの体

  2. C++で学ぶクイックソート(QuickSort)の仕組みと実装方法

    クイックソートとはクイックソート(Quicksort)は、比較に基づいて未ソートのリスト(配列)を並べ替えるソートアルゴリズムの一つです。「パーティション交換ソート(partition exchange sort)」とも呼ばれます。クイックソートは安定ソートではありません。これは、等しい値を持つ要素同士の相対的な順序が保持されないためです。ただし、配列に対してごくわずかな追加メモリだけで動作するため、メモリ効率に優れています。選択ソートと非常に似ていますが、常に最悪のパーティションを選んでしまうわけではない点が異なり、より洗練された形の選択ソートと捉えることもできます。クイックソートは最も効率