※動作はしますが、多分80点程度だと思います。
配列を引数として受け取り、「偶数はa、a、a」「奇数はb、b、b」「少数はc,c,c」と表示
[10,7,2,9,0,4,-2,15,1.5,0.9,-4.5,] と [10,6,4,] を渡してみます。
FloatやDouble型の引数をとる場合に、
2で割った時の余りが0かどうかを判定するif文、%を使うとエラーになりました。
試したところ、+,-,*,/は通じるのですが、%の場合のみエラーになってしまいます。
swift2までは、%でも通じたらしいですが、
swift3ではuse truncating remainder instead というエラーメッセージが出ます。
→ truncatingReminderを使用して解決しました。
分類表示する関数
func printArray(_ numbers:[Float])->Void{
//結果出力用配列を準備
var newArrayDecimal:[Float] = []
var newArrayEvenNumbers:[Float] = []
var newArrayOddNumbers:[Float] = []
let max:Int = numbers.count - 1
for index in 0...max{
var element = numbers[index]
//小数の条件判定の準備。round(towardZero)を使う。
//0に近い数値にする。正の数は切り捨て、負の数は切り上げの挙動。
//rounded(towardZero)だと汎用性が低くなってしまう。
element.round(.towardZero)
//条件に合致した配列の要素を、上で準備した配列に代入
//帯小数の場合
if numbers[index] - element != 0.0 {
newArrayDecimal.append(numbers[index])
//偶数の場合
} else if numbers[index].truncatingRemainder(dividingBy: 2.0) == 0{
newArrayEvenNumbers.append(numbers[index])
//奇数の場合
} else if numbers[index].truncatingRemainder(dividingBy: 2.0) != 0{
newArrayOddNumbers.append(numbers[index])
}
}
print("小数は\(newArrayDecimal)です")
print("偶数は\(newArrayEvenNumbers)です")
print("奇数は\(newArrayOddNumbers)です")
}
printArray([10,7,2,9,0,4,-2,15,1.5,0.9,-4.5,])
print("----------------------")
printArray([10,6,4,])
実行結果
純小数がきちんと表示されない。なぜ?というところ。
実行結果
小数は[1.5, 0.899999976, -4.5]です
偶数は[10.0, 2.0, 0.0, 4.0, -2.0]です
奇数は[7.0, 9.0, 15.0]です
----------------------
小数は[]です
偶数は[10.0, 6.0, 4.0]です
奇数は[]です