Как решить этот лабораторный урок 2.2 в разработке приложений Apple с Swift iBook?

Я новичок, пытающийся быстро освоить iBook от Apple "Разработка приложений с помощью Swift", и, похоже, не смог завершить заключительную работу в уроке 2.2 "Функции". Кто-нибудь может направить меня с правильным путем для завершения лаборатории? Вот что просит лаборатория: Теперь напишите функцию с именем pacing, которая принимает четыре аргумента типа Doubles, которые называются currentDistance, totalDistance, currentTime и goalTime. Функция также должна возвращать строку, которая будет сообщением для отображения пользователю. Функция должна вызывать CalculayPace, передавая соответствующие значения, и захватывать возвращаемое значение. Затем функция должна сравнить возвращаемое значение с goalTime, а если пользователь находится в темпе, вернуть "Keep it up!" И вернуть "Вам нужно нажать немного сильнее!" иначе. Вызовите функцию и напечатайте возвращаемое значение.

Вот моя функция CalculayPace от ранее в другой части лаборатории:

func calculatePace(currentDistance: Double, totalDistance: Double, currentTime: Double) -> Double {
    let currentSpeed = currentDistance / currentTime
    return ((totalDistance / currentSpeed) / 60)
}
print("\(calculatePace(currentDistance: 1, totalDistance: 10, currentTime: 6)) hours till you finish the run!")

Вот функция, которую я пытаюсь выполнить для решения лаборатории, но у меня возникли проблемы с ней:

func pacing(currentDistance: Double, totalDistance: Double, currentTime: Double, goalTime: Double) -> String {
    //I don't know what to put in return
    return ("test return")
    calculatePace(currentDistance: 1, totalDistance: 10, currentTime: 6, goalTime: 60)
}
pacing(currentDistance: 1, totalDistance: 10, currentTime: 6, goalTime: 60)

Я не понимаю, как я должен получить возвращаемое значение, и последние несколько предложений лаборатории смущают меня. "И если пользователь находится в темпе, верните" продолжайте в том же духе! "И верните" Вы должны нажать на него чуть сильнее! ", Иначе. Вызовите функцию и напечатайте возвращаемое значение". Разве это не два разных отпечатка, так как мне вернуть оба и что означает в противном случае?

3 ответа

Решение

Я думаю, что это то, что вы хотите, пожалуйста, проверьте..

 func calculatePace(currentDistance: Double, totalDistance: Double, currentTime: Double) -> Double {
        let currentSpeed = currentDistance / currentTime
        return (totalDistance / currentSpeed)
 }
 print("\(calculatePace(currentDistance: 1, totalDistance: 10, currentTime: 6)) hours till you finish the run!")

 func pacing(currentDistance: Double, totalDistance: Double, currentTime: Double, goalTime: Double) -> String {
        let yourFinishTime = calculatePace(currentDistance: currentDistance, totalDistance: currentDistance, currentTime: currentTime)
        var message = ""

        if yourFinishTime > goalTime {
            message = "You've got to push it a bit harder!"
        }else {
            message = "Keep it up"
        }

        return message

}
pacing(currentDistance: 1, totalDistance: 10, currentTime: 6, goalTime: 60)

Объяснение: Прежде всего я использовал currentDistance и currentTime, чтобы найти текущую скорость, затем я нахожу время, или вы можете сказать примерное время, которое потребуется для завершения общего расстояния, если я продолжу идти на текущей скорости, я вернул это время из Затем, если вычислить функцию PacePace, я сравнил это время с целевым временем. Если я потрачу больше времени на прохождение общего расстояния, то мне придется нажимать сильнее, иначе просто не отставать. Надеюсь, поможет.

Вот мой подход, использующий больше шагов, и в то же время менее лаконичный логический путь для таких новичков, как я: используйте первую функцию, чтобы напечатать приблизительное окончание (требование 1-го назначения) и верните оставшееся время (требование 2-го назначения), затем вторую функцию, чтобы сообщить бегуну (также требование 2-го назначения):

func calculatePace(currentDistance:Double, totalDistance:Double, currentTime:Double) -> Double{
    let speed = currentDistance / currentTime
    let remainingDistance = totalDistance - currentDistance
    let remainingTime = remainingDistance / speed
    print("Estimated finish time: \(currentTime + remainingTime)")
    return remainingTime
}

func pacing(currentDistance:Double, totalDistance:Double, currentTime:Double, goalTime:Double){
    if (currentTime + calculatePace(currentDistance: currentDistance, totalDistance: totalDistance, currentTime: currentTime)) <= goalTime {
        print("Keep it up!")
    } else {
        print("You've got to push it just a bit harder!")
    }
}
pacing(currentDistance: 60, totalDistance: 240, currentTime: 15, goalTime: 60)  

Вот как я это сделал.

      func pacing(currentDistance: Double, totalDistance: Double, currentTime: Double, goalTime: Double) -> String {
if calculatePace(currentDistance: 17.9, totalDistance: 36, currentTime: 28.37) < goalTime {
    return "You've got to push it just a bit harder!"
} else {
    return "Keep it up!"
}

}

print (pacing (currentDistance: 17,9, totalDistance: 36, currentTime: 28,37, goalTime: 45))

Другие вопросы по тегам