@eserdk
Software Engineer, ITMO University

Swift. Как правильно оформить конструкцию switch для графика функции?

Здравствуйте. Столкнулся с некоторой проблемой. Не могу правильно задать промежутки для значений графика функции.

Так выглядит программа с конструкцией If:

func grafik (X:Double) {
var Y = Double()
if X <= -0.5 {Y = 0.5}
else if -0.5 < X && X <= 0 {Y = X+1}
else if 0 < X && X <= 1 {Y = X*X-1}
else if X > 1 {Y = X-1}
println ("X=\(X), Y=\(Y)")
}


Необходимо сделать аналогичное, но с использованием конструкции Switch.
Мне непонятно, как правильно задать интервал.
Вот, что я накалякал:

func grafikSWITCH (X:Double) {
var Y = Double()
switch (X) {
case X...(-0.5) where X <= (-0.5): Y = (0.5)
case -0.5...0 where (-0.5) < X: Y = X+1
case 0...1 where X <= 1: Y = X*X-1
case 1...X where X > 1: Y = X-1
default: Y = 0
}
println(Y)
}


У меня получилось задать интервал с помощью введения новой переменной через "case let x".
Возможно ли задать интервал без введения новой переменной?

Заранее благодарю за ответ!
  • Вопрос задан
  • 551 просмотр
Пригласить эксперта
Ответы на вопрос 1
@dlink13
Если в функцию будут подставляться числа с не более чем 2-мя знаками после запятой, то такой код должен сработать:

func graficSwitch (x: Double) {
var y = Double()
switch x {
case -100...(-0.5) : y = 0.5
case (-0.49)...0 : y = x + 1
case 0.01...1 : y = x * x - 1
case 1.01...100 : y = x - 1
default: y = 0
}
println ("X=\(x), Y=\(y)")
}

Ну и + я указал границу -100...100. Напишите откуда и какого вида значения приходят в фукцию, может еще что то подумаю.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы