【課題7-02】コレクション初期化子の練習2
プロジェクトタイプ | C#コンソールアプリ※ |
---|
プロジェクト名 | Prac_7_02 |
---|
ソリューション名 | PET7 |
---|
ターゲットフレームワーク | .NET 6.0 (長期的なサポート) |
---|
最上位レベルのステートメントを使用しない | 使用しない(チェックオン) |
---|
コレクション初期化子を用いて ,_に示す要素はじめから含む
Dictionary<string, double>
型の変数namedNumbers
を宣言・初期化せよ.
作成する連想配列の内容キー | 値 |
---|
"円周率" | 3.1415 |
"ネイピア数" | 2.7182 |
"黄金数" | 1.6180 |
"重力加速度" | 9.8066 |
"絶対零度" | -273.1500 |
注意
- この設問ではコンソール(黒画面)への表示処理を作る必要はない.
プログラムの概形は_のようにすること(必ず以下をコピーし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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
| namespace Prac_7_02
{
internal class Program
{
static void Main(string[] args)
{
// 文字列に対して数値を関連付ける連想配列の宣言
Dictionary<string, double> namedNumbers = /**************************************************/
/* */
/* 空欄 */
/* */
/* 設問に指定されている内容を */
/* はじめから含む連想配列を作成する */
/* */
/**************************************************/
;
// 表示処理(変更してはならない)
foreach (var nn in namedNumbers)
{
Console.WriteLine($"{nn.Key} .... {nn.Value:0.0000}");
}//foreach
#region チェック (ここは決して変更しないこと)
const double EPSILON = 1.0 / 512;
var aType = namedNumbers.GetType();
var gargs = aType.GetGenericArguments();
if (!(aType.IsGenericType && gargs != null && gargs.Length == 2
&& gargs[0] == typeof(string) && gargs[1] == typeof(double)))
throw new Exception($"変数 {nameof(namedNumbers)} の型が設問に指定されているものと異なる.");
if (!(namedNumbers.Count == 5))
throw new Exception($"変数 {nameof(namedNumbers)} に登録されているエントリーの数が設問に" +
$"指定されているものと異なる(期待: 5, 検出: {namedNumbers.Count})");
if (!namedNumbers.Any(e => e.Key == "円周率" && Math.Abs(e.Value - 3.1415) < EPSILON))
throw new Exception($"変数 {nameof(namedNumbers)}に「円周率」に対応するエントリーが" +
$"存在しないか,値が設問に指定されているものと異なる.");
if (!namedNumbers.Any(e => e.Key == "ネイピア数" && Math.Abs(e.Value - 2.7182) < EPSILON))
throw new Exception($"変数 {nameof(namedNumbers)}に「ネイピア数」に対応するエントリーが" +
$"存在しないか,値が設問に指定されているものと異なる.");
if (!namedNumbers.Any(e => e.Key == "黄金数" && Math.Abs(e.Value - 1.6180) < EPSILON))
throw new Exception($"変数 {nameof(namedNumbers)}に「黄金数」に対応するエントリーが" +
$"存在しないか,値が設問に指定されているものと異なる.");
if (!namedNumbers.Any(e => e.Key == "重力加速度" && Math.Abs(e.Value - 9.8066) < EPSILON))
throw new Exception($"変数 {nameof(namedNumbers)}に「重力加速度」に対応するエントリーが" +
$"存在しないか,値が設問に指定されているものと異なる.");
if (!namedNumbers.Any(e => e.Key == "絶対零度" && Math.Abs(e.Value - -273.1500) < EPSILON))
throw new Exception($"変数 {nameof(namedNumbers)}に「絶対零度」に対応するエントリーが" +
$"存在しないか,値が設問に指定されているものと異なる.");
#endregion
}// end of Main()
}// end of class Program
}// end of namespace
|
正しく実装できた場合,実行結果は_のようになる.
円周率 .... 3.1415
ネイピア数 .... 2.7182
黄金数 .... 1.6180
重力加速度 .... 9.8066
絶対零度 .... -273.1500
実行結果ヒント
なし
Last updated on 2023-11-22
Published on 2023-11-22