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

【課題6-03】連想配列の練習 - その2

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

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

日付に対して文字列を対応付ける連想配列を作成し,後述するエントリーを追加せよ.

注意
  • この設問ではコンソール(黒画面)への表示処理を作る必要はない.

_にはholyDaysという名前の,連想配列型の変数が宣言されている. この連想配列は日付(DateTime型)のデータに対して その日付の祝日の名前を文字列(string型)のデータを対応付けるものである. この連想配列holyDaysに対して_に示すデータを登録せよ.

連想配列の内容
キー
2023年11月 3日"文化の日"
2023年 4月 29日"昭和の日"
2023年 5月 5日"こどもの日"
2023年11月23日"勤労感謝の日"
2023年 5月 3日"憲法記念日"

プログラムの概形は_のようにすること(必ずこのコードをコピー&ペーストして用いること).

テンプレートコード
 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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
namespace Prac_6_03
{
    class Program
    {
        static void Main(string[] args)
        {
            // 連想配列の宣言
            Dictionary</*** 空欄1 ***/, /*** 空欄2 ***/> holyDays = /*** 空欄3 ***/;

            /************************************************************/
            /*                                                          */
            /*                         空欄4                            */
            /*                                                          */
            /*              設問に指定されたエントリーを                */
            /*           連想配列の変数 holyDays に登録する.           */
            /*              (複数行にわたる処理でよい)                  */
            /*                                                          */
            /************************************************************/

            // 表示処理(変更してはならない)
            foreach (var hd in holyDays)
            {
                Console.WriteLine($"{hd.Key:yyyy年MM月dd日} .... {hd.Value}");

            }//foreach             

            #region チェック (ここは決して変更しないこと)
            var aType = holyDays.GetType();
            var gargs = aType.GetGenericArguments();
            if (!(aType.IsGenericType && gargs != null && gargs.Length == 2
                && gargs[0] == typeof(DateTime) && gargs[1] == typeof(string)))
                throw new Exception($"変数 {nameof(holyDays)} の型が設問に指定されているものと異なる.");
            if (!(holyDays.Count == 5))
                throw new Exception($"変数 {nameof(holyDays)} に登録されているエントリーの数が設問に" +
                    $"指定されているものと異なる(期待: 5, 検出: {holyDays.Count})");
            if (!holyDays.Any(e => e.Key.Ticks == 638345664000000000 && e.Value == "文化の日"))
                throw new Exception($"変数 holyDaysに「文化の日」に対応するエントリーが" +
                    $"存在しないか,値が設問に指定されているものと異なる.");
            if (!holyDays.Any(e => e.Key.Ticks == 638183232000000000 && e.Value == "昭和の日"))
                throw new Exception($"変数 holyDaysに「昭和の日」に対応するエントリーが" +
                    $"存在しないか,値が設問に指定されているものと異なる.");
            if (!holyDays.Any(e => e.Key.Ticks == 638188416000000000 && e.Value == "こどもの日"))
                throw new Exception($"変数 holyDaysに「こどもの日」に対応するエントリーが" +
                    $"存在しないか,値が設問に指定されているものと異なる.");
            if (!holyDays.Any(e => e.Key.Ticks == 638362944000000000 && e.Value == "勤労感謝の日"))
                throw new Exception($"変数 holyDaysに「勤労感謝の日」に対応するエントリーが" +
                    $"存在しないか,値が設問に指定されているものと異なる.");
            if (!holyDays.Any(e => e.Key.Ticks == 638186688000000000 && e.Value == "憲法記念日"))
                throw new Exception($"変数 holyDaysに「憲法記念日」に対応するエントリーが" +
                    $"存在しないか,値が設問に指定されているものと異なる.");
            #endregion

        }// end of Main()

    }// end of class Program

}// end of namespace

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

2023年11月03日 .... 文化の日
2023年04月29日 .... 昭和の日
2023年05月05日 .... こどもの日
2023年11月23日 .... 勤労感謝の日
2023年05月03日 .... 憲法記念日
実行結果

ヒント

なし

Last updated on 2023-11-14
Published on 2023-11-14

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