【課題6-02】連想配列の練習 - その1
プロジェクトタイプ | C#コンソールアプリ※ |
---|
プロジェクト名 | Prac_6_02 |
---|
ソリューション名 | PET6 |
---|
ターゲットフレームワーク | .NET 6.0 (長期的なサポート) |
---|
最上位レベルのステートメントを使用しない | 使用しない(チェックオン) |
---|
文字列に対して実数を対応付ける連想配列を作成し,後述するエントリーを追加せよ.
注意
- この設問ではコンソール(黒画面)への表示処理を作る必要はない.
_にはnamedNumbers
という名前の,連想配列型の変数が宣言されている.
この連想配列は文字列(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
56
57
| namespace Prac_6_02
{
internal class Program
{
static void Main(string[] args)
{
// 連想配列の宣言
Dictionary</*** 空欄1 ***/, /*** 空欄2 ***/> namedNumbers = /*** 空欄3 ***/;
/************************************************************/
/* */
/* 空欄4 */
/* */
/* 設問に指定されたエントリーを */
/* 連想配列の変数 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-14
Published on 2023-11-14