プログラミング演習Ⅲ(2023)

【課題4-08】コンソール遊び - その6(加点)

プロジェクトタイプC#コンソールアプリ※
プロジェクト名Prac_4_08
ソリューション名PET4
ターゲットフレームワーク.NET 6.0 (長期的なサポート)
最上位レベルのステートメントを使用しない使用しない(チェックオン)

※ 「コンソールアプリ(.NET Framework)」ではないので注意せよ!

【課題4-07】と同じint型の配列samples文字を使った棒グラフとして コンソール(黒画面)に表示せよ.なお配列samplesの要素の 値の範囲は-15以上15以下 であるという前提を置いてよい.

注意
  • この課題は加点課題である

配列を作成したあと,配列の各要素の内容をfor文を用いてコンソールに表示すること. その際,各要素を出力結果のように1行に1つずつ以下の形式で表示すること.

添え字:i番目の要素(棒グラフ)
  • 凡例
    • 添え字
      • その要素の添え字(インデックス)1.最初の要素はゼロ.
      • 空白埋め2文字分(右寄せ)で表示すること.
    • :
      • 文言.半角コロン
    • i番目の要素(棒グラフ)
      • 数値の値によって以下のように表示する.
        • 【値がゼロである場合】
          • グラフの中央(ゼロ点)に|だけを表示する.
        • 【値が負である場合】
          • グラフの中央(ゼロ点)に|を表示し,その 左側にその値(の絶対値)と同じ数の半角シャープ(#)で表示する
        • 【値が正である場合】
          • グラフの中央(ゼロ点)に|を表示し,その 右側にその値と同じ数の半角シャープ(#)で表示する
    • 改行
出力フォーマット

なお,仮に配列の内容(要素数や各要素の値)が変更されたとしても正しく動作するようにすること.

プログラムの概形は_のようにすること(必ず以下をコピーしProgram.cs全体を上書きすること).

テンプレートコード
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
namespace Prac_4_08
{
    internal class Program
    {
        static void Main(string[] args)
        {
            // 処理対象の配列(変更してはならない)
            int[] samples = GetSecretArray();

            /**********************************************************/
            /*                                                        */
            /*                         空欄                           */
            /*                                                        */
            /*         配列 samples の内容を設問に指定された          */
            /*         フォーマットで表示する                         */
            /*                                                        */
            /**********************************************************/
            
        }// end of Main()

        #region 変更してはならない
        static Random sRandom = new Random(234);
        static int[] GetSecretArray()
        {
            int size = sRandom.Next(10, 20);
            int[] ret = new int[size];
            ret[0] = sRandom.Next(-10, 10);
            for (int i = 1; i < size; ++i)
                ret[i] = Math.Clamp(ret[i - 1] + sRandom.Next(-5, 5), -15, 15);
            return ret;
        }
        #endregion
    }// end of class Program
}// end of namespace

正しく実装できた場合,実行結果は_のようになる。

 0:              #|
 1:            ###|
 2:            ###|
 3:               |
 4:          #####|
 5:            ###|
 6:               |
 7:               |####
 8:               |####
 9:               |#####
10:               |#
11:               |
12:            ###|
13:              #|
14:          #####|
15:       ########|
16:  #############|
17:###############|
18:    ###########|
実行結果

ヒント

なし


  1. C#では「何番目」はゼロ開始なので注意せよ.例えば,先頭から数えて最初の要素は「0番目」,先頭から数えて4個目の要素は「3番目」となる. ↩︎

Last updated on 2023-11-02
Published on 2023-11-02

Powered by Hugo. Theme by TechDoc. Designed by Thingsym.