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

C言語で左矢印パターンと右矢印パターンを出力するプログラム


プログラムの概要

このプログラムは、C言語を使って星(*)で構成された左矢印パターン右矢印パターンをコンソールに出力します。ユーザーが行数を入力すると、その行数に応じた矢印の形が表示されます。for文の入れ子(二重ループ)の動きを学ぶのに最適な題材です。

アルゴリズム

まず、矢印パターンを出力するための行数をユーザーから受け取ります。その後、次の手順でパターンを描画していきます。

星(*)で矢印の上半分を出力する
星(*)で逆右三角形を出力する
星(*)で矢印の下半分を出力する
星(*)で右三角形を出力する

左矢印パターンのロジック

左矢印パターンは2つのループで構成されます。前半のループでは、行が進むごとに先頭の空白を1つずつ減らしながら星を出力し、後半のループでは行番号と同じ数だけ星を出力します。これにより、左向きの矢印の形状が完成します。

右矢印パターンのロジック

右矢印パターンも同様に2つのループで構成されます。前半では「2 × (行番号 − 1)」個の空白を出力してから星を表示し、後半では「2 × (行数 − 行番号)」個の空白の後に星を表示します。この空白の調整によって、右向きの矢印の軸がずれながら描画されます。

サンプルコード

/* 左矢印と右矢印のパターンを出力するプログラム */
#include<stdio.h>
int main() {
    int r, c, rows; // 左矢印パターン用
    int r1, c1, rows1; // 右矢印パターン用
    clrscr();
    printf("左矢印パターンを出力する行数を入力してください: ");
    scanf("%d", &rows);
    printf("\n");
    printf("左矢印パターン:");
    printf("\n");
    for(r=1; r<rows; r++){
        for(c=1; c<=(rows-r); c++){
            printf(" ");
        }
        for(c=r; c<=rows; c++){
            printf("*");
        }
        printf("\n");
    }
    for(r=1; r<=rows; r++){
        for(c=1; c<r; c++){
            printf(" ");
        }
        for(c=1; c<=r; c++){
            printf("*");
        }
        printf("\n");
    }
    printf("右矢印パターンを出力する行数を入力してください: ");
    scanf("%d", &rows1);
    printf("\n");
    printf("右矢印パターン:");
    printf("\n");
    for(r1=1; r1<rows1; r1++){
        for(c1=1; c1<=(2*r1-2); c1++){
            printf(" ");
        }
        for(c1=r1; c1<=rows1; c1++){
            printf("*");
        }
        printf("\n");
    }
    for(r1=1; r1<=rows1; r1++){
        for(c1=1; c1<=(2*rows1 - 2*r1); c1++){
            printf(" ");
        }
        for(c1=1; c1<=r1; c1++){
            printf("*");
        }
        printf("\n");
    }
    getch();
    return 0;
}

注意: clrscr() と getch() は、Turbo C などの古い開発環境で提供される conio.h の関数です。GCC などの現代のコンパイラで実行する場合は、これらの行を削除するか、必要に応じて #include<conio.h> を追加してください。

出力例

行数として「5」を入力した場合、左矢印パターンは次のように出力されます。

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

右矢印パターンは次のように出力されます。

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

C言語で左矢印パターンと右矢印パターンを出力するプログラム


C言語で左矢印パターンと右矢印パターンを出力するプログラム


  1. C言語で配列の下三角行列と上三角行列を出力するプログラム

    プログラムの説明 本記事では、入力された配列(行列)から下三角行列と上三角行列を出力するC言語のプログラムを紹介します。 三角行列とは 三角行列とは、下三角行列または上三角行列のいずれかに該当する行列の総称です。 下三角行列 正方行列において、主対角線より上側のすべての要素が0である行列を「下三角行列」と呼びます。 上三角行列 正方行列において、主対角線より下側のすべての要素が0である行列を「上三角行列」と呼びます。 次のような形状を持つ行列は下三角行列(左三角行列)と呼ばれます。 $${\displaystyle L={\begin{bmatrix}\ell _{1,1}&&&&0\\\e

  2. 配列の左回転をO(n)時間・O(1)空間で実現するC++プログラムの書き方

    本記事では、サイズnの整数配列と複数の回転位置kが与えられたとき、指定されたインデックスkから配列を左方向へ回転させた結果を出力する方法を、時間計算量O(n)・空間計算量O(1)の制約のもとで解説します。 配列の左回転とは、各要素を左へk個分ずらし、はみ出した要素を右端に折り返して配置する操作です。例えば、配列 {1, 2, 3, 4, 5} を1回左に回転すると {2, 3, 4, 5, 1} になります。 この手法の鍵となるのは剰余演算(%)です。回転後の配列を新たに作成することなく、インデックス計算だけで結果を直接出力できるため、追加のメモリ領域を一切必要としません。 入力例と出力例