回答編集履歴

5

if式について

2016/08/05 07:38

投稿

ozwk
ozwk

スコア13528

test CHANGED
@@ -151,3 +151,55 @@
151
151
  0
152
152
 
153
153
  ```
154
+
155
+
156
+
157
+ ---
158
+
159
+
160
+
161
+ ちなみに質問のコードの何が(再代入を除いて)文法的にまずかったのかです。
162
+
163
+
164
+
165
+ まず、F#のifは式です。何かしらの値を返さなければいけません。
166
+
167
+ elseを省略するとunitを返すことが求められます。
168
+
169
+
170
+
171
+ 次に
172
+
173
+ ```F#
174
+
175
+ let f x =
176
+
177
+ let y = x + 1 // letが云々エラー
178
+
179
+ ```
180
+
181
+ この書き方は、何を返すのか指定していないのでエラーになります。
182
+
183
+
184
+
185
+ ```F#
186
+
187
+ let f x =
188
+
189
+ let y = x + 1
190
+
191
+ y
192
+
193
+ ```
194
+
195
+ または
196
+
197
+ ```F#
198
+
199
+ let f x =
200
+
201
+ x + 1
202
+
203
+ ```
204
+
205
+ こう書く必要があります。

4

コード修正

2016/08/05 07:38

投稿

ozwk
ozwk

スコア13528

test CHANGED
@@ -74,7 +74,7 @@
74
74
 
75
75
  let color x =
76
76
 
77
- match avg > x with
77
+ match avg < x with
78
78
 
79
79
  | true -> ConsoleColor.White
80
80
 
@@ -128,7 +128,7 @@
128
128
 
129
129
  let color x =
130
130
 
131
- match avg > x with
131
+ match avg < x with
132
132
 
133
133
  | true -> ConsoleColor.White
134
134
 

3

さらにコード追加

2016/08/05 03:23

投稿

ozwk
ozwk

スコア13528

test CHANGED
@@ -103,3 +103,51 @@
103
103
  0
104
104
 
105
105
  ```
106
+
107
+
108
+
109
+ ```F#
110
+
111
+ open System
112
+
113
+ [<EntryPoint>]
114
+
115
+ let main argv =
116
+
117
+
118
+
119
+ let xs = [1..4] |> List.map( fun _ -> double(Console.ReadLine()))
120
+
121
+
122
+
123
+ let avg = xs |> List.average
124
+
125
+
126
+
127
+ let disp x =
128
+
129
+ let color x =
130
+
131
+ match avg > x with
132
+
133
+ | true -> ConsoleColor.White
134
+
135
+ | false -> ConsoleColor.Red
136
+
137
+ Console.ForegroundColor <- color x
138
+
139
+ x |> printfn "%A"
140
+
141
+
142
+
143
+
144
+
145
+ xs |> List.iter disp
146
+
147
+
148
+
149
+ Console.ReadLine() |> ignore
150
+
151
+ 0
152
+
153
+ ```

2

コード追加

2016/08/05 03:17

投稿

ozwk
ozwk

スコア13528

test CHANGED
@@ -41,3 +41,65 @@
41
41
  これだと一度赤になったらなりっぱなしなので
42
42
 
43
43
  工夫してください
44
+
45
+
46
+
47
+ こんな感じ?
48
+
49
+ ```F#
50
+
51
+ open System
52
+
53
+ [<EntryPoint>]
54
+
55
+ let main argv =
56
+
57
+
58
+
59
+
60
+
61
+ let a = double(Console.ReadLine())
62
+
63
+ let b = double(Console.ReadLine())
64
+
65
+ let c = double(Console.ReadLine())
66
+
67
+ let d = double(Console.ReadLine())
68
+
69
+ let avg = (a+b+c+d)/4.0
70
+
71
+
72
+
73
+ let disp x =
74
+
75
+ let color x =
76
+
77
+ match avg > x with
78
+
79
+ | true -> ConsoleColor.White
80
+
81
+ | false -> ConsoleColor.Red
82
+
83
+ Console.ForegroundColor <- color x
84
+
85
+ x |> printfn "%A"
86
+
87
+
88
+
89
+
90
+
91
+ disp a
92
+
93
+ disp b
94
+
95
+ disp c
96
+
97
+ disp d
98
+
99
+
100
+
101
+ Console.ReadLine() |> ignore
102
+
103
+ 0
104
+
105
+ ```

1

修正

2016/08/05 03:12

投稿

ozwk
ozwk

スコア13528

test CHANGED
@@ -36,7 +36,7 @@
36
36
 
37
37
 
38
38
 
39
- ただ、平均より下を赤くする(以上なら)ということなら
39
+ ただ、平均より下を赤くする(以上なら別の色)ということなら
40
40
 
41
41
  これだと一度赤になったらなりっぱなしなので
42
42