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

【課題2-04】コンソール遊び - その1(加点)

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

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

_のテンプレートコードには,あらかじめint型の配列samplesが 用意されている.この配列samplesの内容をコンソール(黒画面)に表示せよ.

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

配列の各要素の内容を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_2_04
{
    internal class Program
    {
        static void Main(string[] args)
        {
            // 処理対象の配列(変更してはならない)
            int[] samples = GetSecretArray();

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

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

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

 0:3
 1:2
 2:8
 3:15
 4:16
 5:15
 6:19
 7:24
 8:26
 9:29
10:30
11:30
12:27
13:30
14:30
実行結果

ヒント

  • 挿入文字列($で始まる文字列)では,文字列内に変数など式の内容を組み込むことができるが,その際の式の内容をどのようにフォーマットするかを指定することが可能である.
  • 挿入文字列内でのフォーマット指定に関する文法を_に,使用例を_に示す.
    • 埋め込みたい変数・定数・式 ... その文字列に埋め込みたい変数など
    • アラインメント ... その変数の内容を何文字分で表示するかを整数で指定する
    • フォーマット文字列 ... その変数の内容をどのように表示するか(型により指定方法が異なる)
  • フォーマット文字列の指定方法は型ごとに異なる.詳細についてはOverview: How to format numbers, dates, enums, and other types in .NET - .NET | Microsoft Learnを参照せよ.
  • この設問のように単純に空白埋めをしたい場合はアラインメントの部分のみを指定すればよい
フォーマット指定
フォーマット指定の例
■記述例
1
2
3
4
5
6
7
8
// 以下のコードはあらかじめ double 型の変数 hoge が
// 宣言・初期化されていることを前提としている.

Console.WriteLine($"① あいうえお{hoge}かきくけこ");      // ←① フォーマット指定なし
Console.WriteLine($"② さしすせそ{hoge,8}たちつてと");    // ←② 8文字分(右寄せ)で表示
Console.WriteLine($"③ なにぬねの{hoge:0.00}はひふへほ"); // ←③ 小数点2位まで表示
Console.WriteLine($"④ まみむめも{hoge,8:0.00}やゆよ");   // ←④ 小数点2位までを8文字分(右寄せ)表示
Console.WriteLine($"⑤ らりるれろ{hoge,-8:0.00}わをん");  // ←⑤ 小数点2位までを8文字分(左寄せ)表示
■実行結果
① あいうえお2.7183かきくけこ
② さしすせそ  2.7183たちつてと
③ なにぬねの2.72はひふへほ
④ まみむめも    2.72やゆよ
⑤ らりるれろ2.72    わをん

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

Last updated on 2023-11-28
Published on 2023-11-28

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