From 38bcbabf45a045355cc8e8c9279cd9583339bc2e Mon Sep 17 00:00:00 2001 From: Yuriy Date: Tue, 21 Jan 2025 20:15:46 +0300 Subject: [PATCH 1/4] first review --- ftracker.go | 88 +++++++++++++++++++++++++++++------------------------ 1 file changed, 48 insertions(+), 40 deletions(-) diff --git a/ftracker.go b/ftracker.go index edf04d5..dc41109 100644 --- a/ftracker.go +++ b/ftracker.go @@ -1,17 +1,17 @@ package ftracker import ( - "fmt" - "math" + "fmt" + "math" ) // Основные константы, необходимые для расчетов. const ( - lenStep = 0.65 // средняя длина шага. - mInKm = 1000 // количество метров в километре. - minInH = 60 // количество минут в часе. - kmhInMsec = 0.278 // коэффициент для преобразования км/ч в м/с. - cmInM = 100 // количество сантиметров в метре. + lenStep = 0.65 // средняя длина шага. + mInKm = 1000 // количество метров в километре. + minInH = 60 // количество минут в часе. + kmhInMsec = 0.278 // коэффициент для преобразования км/ч в м/с. + cmInM = 100 // количество сантиметров в метре. ) // distance возвращает дистанцию(в километрах), которую преодолел пользователь за время тренировки. @@ -20,7 +20,12 @@ const ( // // action int — количество совершенных действий (число шагов при ходьбе и беге, либо гребков при плавании). func distance(action int) float64 { - return float64(action) * lenStep / mInKm + return float64(action) * lenStep / mInKm +} + +func swimigDistanse(lengthPool, countPool int) float64 { + swimDistance := (lengthPool * countPool) / mInKm + return float64(swimDistance) } // meanSpeed возвращает значение средней скорости движения во время тренировки. @@ -30,11 +35,11 @@ func distance(action int) float64 { // action int — количество совершенных действий(число шагов при ходьбе и беге, либо гребков при плавании). // duration float64 — длительность тренировки в часах. func meanSpeed(action int, duration float64) float64 { - if duration == 0 { - return 0 - } - distance := distance(action) - return distance / duration + if duration == 0 { + return 0 + } + distance := distance(action) + return distance / duration } // ShowTrainingInfo возвращает строку с информацией о тренировке. @@ -45,22 +50,22 @@ func meanSpeed(action int, duration float64) float64 { // trainingType string — вид тренировки(Бег, Ходьба, Плавание). // duration float64 — длительность тренировки в часах. func ShowTrainingInfo(action int, trainingType string, duration, weight, height float64, lengthPool, countPool int) string { - // ваш код здесь - switch { + // ваш код здесь + switch { case trainingType == "Бег": - distance := ... // вызовите здесь необходимую функцию - speed := ... // вызовите здесь необходимую функцию - calories := ... // вызовите здесь необходимую функцию + distance := distance(action) // вызовите здесь необходимую функцию + speed := meanSpeed(action, duration) // вызовите здесь необходимую функцию + calories := RunningSpentCalories(action, weight, duration) // вызовите здесь необходимую функцию return fmt.Sprintf("Тип тренировки: %s\nДлительность: %.2f ч.\nДистанция: %.2f км.\nСкорость: %.2f км/ч\nСожгли калорий: %.2f\n", trainingType, duration, distance, speed, calories) case trainingType == "Ходьба": - distance := ... // вызовите здесь необходимую функцию - speed := ... // вызовите здесь необходимую функцию - calories := ... // вызовите здесь необходимую функцию + distance := distance(action) // вызовите здесь необходимую функцию + speed := meanSpeed(action, duration) // вызовите здесь необходимую функцию + calories := WalkingSpentCalories(action, duration, weight, height) // вызовите здесь необходимую функцию return fmt.Sprintf("Тип тренировки: %s\nДлительность: %.2f ч.\nДистанция: %.2f км.\nСкорость: %.2f км/ч\nСожгли калорий: %.2f\n", trainingType, duration, distance, speed, calories) case trainingType == "Плавание": - distance := ... // вызовите здесь необходимую функцию - speed := ... // вызовите здесь необходимую функцию - calories := ... // вызовите здесь необходимую функцию + distance := swimigDistanse(lengthPool, countPool) // вызовите здесь необходимую функцию + speed := swimmingMeanSpeed(lengthPool, countPool, duration) // вызовите здесь необходимую функцию + calories := SwimmingSpentCalories(lengthPool, countPool, duration, weight) // вызовите здесь необходимую функцию return fmt.Sprintf("Тип тренировки: %s\nДлительность: %.2f ч.\nДистанция: %.2f км.\nСкорость: %.2f км/ч\nСожгли калорий: %.2f\n", trainingType, duration, distance, speed, calories) default: return "неизвестный тип тренировки" @@ -69,8 +74,8 @@ func ShowTrainingInfo(action int, trainingType string, duration, weight, height // Константы для расчета калорий, расходуемых при беге. const ( - runningCaloriesMeanSpeedMultiplier = 18 // множитель средней скорости. - runningCaloriesMeanSpeedShift = 1.79 // среднее количество сжигаемых калорий при беге. + runningCaloriesMeanSpeedMultiplier = 18 // множитель средней скорости. + runningCaloriesMeanSpeedShift = 1.79 // среднее количество сжигаемых калорий при беге. ) // RunningSpentCalories возвращает количество потраченных колорий при беге. @@ -81,14 +86,15 @@ const ( // weight float64 — вес пользователя. // duration float64 — длительность тренировки в часах. func RunningSpentCalories(action int, weight, duration float64) float64 { - // ваш код здесь - ... + // ваш код здесь + resultRun := ((runningCaloriesMeanSpeedMultiplier * meanSpeed(action, duration) * runningCaloriesMeanSpeedShift) * weight / mInKm * duration * minInH) + return float64(resultRun) } // Константы для расчета калорий, расходуемых при ходьбе. const ( - walkingCaloriesWeightMultiplier = 0.035 // множитель массы тела. - walkingSpeedHeightMultiplier = 0.029 // множитель роста. + walkingCaloriesWeightMultiplier = 0.035 // множитель массы тела. + walkingSpeedHeightMultiplier = 0.029 // множитель роста. ) // WalkingSpentCalories возвращает количество потраченных калорий при ходьбе. @@ -100,14 +106,15 @@ const ( // weight float64 — вес пользователя. // height float64 — рост пользователя. func WalkingSpentCalories(action int, duration, weight, height float64) float64 { - // ваш код здесь - ... + // ваш код здесь + resultWalk := ((walkingCaloriesWeightMultiplier*weight + (math.Pow(meanSpeed(action, duration), 2)/height)*walkingSpeedHeightMultiplier*weight) * duration * minInH) + return float64(resultWalk) } // Константы для расчета калорий, расходуемых при плавании. const ( - swimmingCaloriesMeanSpeedShift = 1.1 // среднее количество сжигаемых колорий при плавании относительно скорости. - swimmingCaloriesWeightMultiplier = 2 // множитель веса при плавании. + swimmingCaloriesMeanSpeedShift = 1.1 // среднее количество сжигаемых колорий при плавании относительно скорости. + swimmingCaloriesWeightMultiplier = 2 // множитель веса при плавании. ) // swimmingMeanSpeed возвращает среднюю скорость при плавании. @@ -118,10 +125,10 @@ const ( // countPool int — сколько раз пользователь переплыл бассейн. // duration float64 — длительность тренировки в часах. func swimmingMeanSpeed(lengthPool, countPool int, duration float64) float64 { - if duration == 0 { - return 0 - } - return float64(lengthPool) * float64(countPool) / mInKm / duration + if duration == 0 { + return 0 + } + return float64(lengthPool) * float64(countPool) / mInKm / duration } // SwimmingSpentCalories возвращает количество потраченных калорий при плавании. @@ -133,6 +140,7 @@ func swimmingMeanSpeed(lengthPool, countPool int, duration float64) float64 { // duration float64 — длительность тренировки в часах. // weight float64 — вес пользователя. func SwimmingSpentCalories(lengthPool, countPool int, duration, weight float64) float64 { - // ваш код здесь - ... + // ваш код здесь + speed := swimmingMeanSpeed(lengthPool, countPool, duration) + return (speed + swimmingCaloriesMeanSpeedShift) * swimmingCaloriesWeightMultiplier * weight * duration } From d1d0d711456e6556922e03074ae435da617c9125 Mon Sep 17 00:00:00 2001 From: Yuriy Date: Tue, 21 Jan 2025 20:33:48 +0300 Subject: [PATCH 2/4] second review --- ftracker.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ftracker.go b/ftracker.go index dc41109..83d3c68 100644 --- a/ftracker.go +++ b/ftracker.go @@ -63,10 +63,10 @@ func ShowTrainingInfo(action int, trainingType string, duration, weight, height calories := WalkingSpentCalories(action, duration, weight, height) // вызовите здесь необходимую функцию return fmt.Sprintf("Тип тренировки: %s\nДлительность: %.2f ч.\nДистанция: %.2f км.\nСкорость: %.2f км/ч\nСожгли калорий: %.2f\n", trainingType, duration, distance, speed, calories) case trainingType == "Плавание": - distance := swimigDistanse(lengthPool, countPool) // вызовите здесь необходимую функцию + swdistance := swimigDistanse(lengthPool, countPool) // вызовите здесь необходимую функцию speed := swimmingMeanSpeed(lengthPool, countPool, duration) // вызовите здесь необходимую функцию calories := SwimmingSpentCalories(lengthPool, countPool, duration, weight) // вызовите здесь необходимую функцию - return fmt.Sprintf("Тип тренировки: %s\nДлительность: %.2f ч.\nДистанция: %.2f км.\nСкорость: %.2f км/ч\nСожгли калорий: %.2f\n", trainingType, duration, distance, speed, calories) + return fmt.Sprintf("Тип тренировки: %s\nДлительность: %.2f ч.\nДистанция: %.2f км.\nСкорость: %.2f км/ч\nСожгли калорий: %.2f\n", trainingType, duration, swdistance, speed, calories) default: return "неизвестный тип тренировки" } From 7b9edb814bed4ba067759e0778f19adc7ac94ed5 Mon Sep 17 00:00:00 2001 From: Yuriy Date: Tue, 21 Jan 2025 20:59:19 +0300 Subject: [PATCH 3/4] third review --- ftracker.go | 60 ++++++++++++++++++++++++++++------------------------- 1 file changed, 32 insertions(+), 28 deletions(-) diff --git a/ftracker.go b/ftracker.go index 83d3c68..8103865 100644 --- a/ftracker.go +++ b/ftracker.go @@ -23,9 +23,14 @@ func distance(action int) float64 { return float64(action) * lenStep / mInKm } -func swimigDistanse(lengthPool, countPool int) float64 { - swimDistance := (lengthPool * countPool) / mInKm - return float64(swimDistance) +// swimmingDistance возвращает дистанцию(в километрах), которую преодолел пользователь за время плавания. +// +// Параметры: +// +// lengthPool int — длина бассейна в метрах. +// countPool int — количество проплытых бассейнов. +func swimmingDistance(lengthPool, countPool int) float64 { + return float64(lengthPool*countPool) / mInKm } // meanSpeed возвращает значение средней скорости движения во время тренировки. @@ -38,8 +43,7 @@ func meanSpeed(action int, duration float64) float64 { if duration == 0 { return 0 } - distance := distance(action) - return distance / duration + return distance(action) / duration } // ShowTrainingInfo возвращает строку с информацией о тренировке. @@ -49,24 +53,27 @@ func meanSpeed(action int, duration float64) float64 { // action int — количество совершенных действий(число шагов при ходьбе и беге, либо гребков при плавании). // trainingType string — вид тренировки(Бег, Ходьба, Плавание). // duration float64 — длительность тренировки в часах. +// weight float64 — вес пользователя. +// height float64 — рост пользователя. +// lengthPool int — длина бассейна в метрах. +// countPool int — количество проплытых бассейнов. func ShowTrainingInfo(action int, trainingType string, duration, weight, height float64, lengthPool, countPool int) string { - // ваш код здесь - switch { - case trainingType == "Бег": - distance := distance(action) // вызовите здесь необходимую функцию - speed := meanSpeed(action, duration) // вызовите здесь необходимую функцию - calories := RunningSpentCalories(action, weight, duration) // вызовите здесь необходимую функцию + switch trainingType { + case "Бег": + distance := distance(action) + speed := meanSpeed(action, duration) + calories := RunningSpentCalories(action, weight, duration) + return fmt.Sprintf("Тип тренировки: %s\nДлительность: %.2f ч.\nДистанция: %.2f км.\nСкорость: %.2f км/ч\nСожгли калорий: %.2f\n", trainingType, duration, distance, speed, calories) + case "Ходьба": + distance := distance(action) + speed := meanSpeed(action, duration) + calories := WalkingSpentCalories(action, duration, weight, height) return fmt.Sprintf("Тип тренировки: %s\nДлительность: %.2f ч.\nДистанция: %.2f км.\nСкорость: %.2f км/ч\nСожгли калорий: %.2f\n", trainingType, duration, distance, speed, calories) - case trainingType == "Ходьба": - distance := distance(action) // вызовите здесь необходимую функцию - speed := meanSpeed(action, duration) // вызовите здесь необходимую функцию - calories := WalkingSpentCalories(action, duration, weight, height) // вызовите здесь необходимую функцию + case "Плавание": + distance := swimmingDistance(lengthPool, countPool) + speed := swimmingMeanSpeed(lengthPool, countPool, duration) + calories := SwimmingSpentCalories(lengthPool, countPool, duration, weight) return fmt.Sprintf("Тип тренировки: %s\nДлительность: %.2f ч.\nДистанция: %.2f км.\nСкорость: %.2f км/ч\nСожгли калорий: %.2f\n", trainingType, duration, distance, speed, calories) - case trainingType == "Плавание": - swdistance := swimigDistanse(lengthPool, countPool) // вызовите здесь необходимую функцию - speed := swimmingMeanSpeed(lengthPool, countPool, duration) // вызовите здесь необходимую функцию - calories := SwimmingSpentCalories(lengthPool, countPool, duration, weight) // вызовите здесь необходимую функцию - return fmt.Sprintf("Тип тренировки: %s\nДлительность: %.2f ч.\nДистанция: %.2f км.\nСкорость: %.2f км/ч\nСожгли калорий: %.2f\n", trainingType, duration, swdistance, speed, calories) default: return "неизвестный тип тренировки" } @@ -86,9 +93,8 @@ const ( // weight float64 — вес пользователя. // duration float64 — длительность тренировки в часах. func RunningSpentCalories(action int, weight, duration float64) float64 { - // ваш код здесь - resultRun := ((runningCaloriesMeanSpeedMultiplier * meanSpeed(action, duration) * runningCaloriesMeanSpeedShift) * weight / mInKm * duration * minInH) - return float64(resultRun) + speed := meanSpeed(action, duration) + return (runningCaloriesMeanSpeedMultiplier*speed + runningCaloriesMeanSpeedShift) * weight / mInKm * duration * minInH } // Константы для расчета калорий, расходуемых при ходьбе. @@ -106,9 +112,8 @@ const ( // weight float64 — вес пользователя. // height float64 — рост пользователя. func WalkingSpentCalories(action int, duration, weight, height float64) float64 { - // ваш код здесь - resultWalk := ((walkingCaloriesWeightMultiplier*weight + (math.Pow(meanSpeed(action, duration), 2)/height)*walkingSpeedHeightMultiplier*weight) * duration * minInH) - return float64(resultWalk) + speed := meanSpeed(action, duration) + return (walkingCaloriesWeightMultiplier*weight + (math.Pow(speed, 2)/height)*walkingSpeedHeightMultiplier*weight) * duration * minInH } // Константы для расчета калорий, расходуемых при плавании. @@ -128,7 +133,7 @@ func swimmingMeanSpeed(lengthPool, countPool int, duration float64) float64 { if duration == 0 { return 0 } - return float64(lengthPool) * float64(countPool) / mInKm / duration + return float64(lengthPool*countPool) / mInKm / duration } // SwimmingSpentCalories возвращает количество потраченных калорий при плавании. @@ -140,7 +145,6 @@ func swimmingMeanSpeed(lengthPool, countPool int, duration float64) float64 { // duration float64 — длительность тренировки в часах. // weight float64 — вес пользователя. func SwimmingSpentCalories(lengthPool, countPool int, duration, weight float64) float64 { - // ваш код здесь speed := swimmingMeanSpeed(lengthPool, countPool, duration) return (speed + swimmingCaloriesMeanSpeedShift) * swimmingCaloriesWeightMultiplier * weight * duration } From 628c42e744cc2b36db0d95f6ee0e21722d456a13 Mon Sep 17 00:00:00 2001 From: Yuriy Date: Tue, 21 Jan 2025 22:05:21 +0300 Subject: [PATCH 4/4] =?UTF-8?q?=D0=94=D0=BE=D1=81=D1=82=D0=B0=D0=BB=20?= =?UTF-8?q?=D1=81=D0=BE=D0=B1=D0=B0=D0=BA=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ftracker.go | 62 ++++++++++++++++++++++------------------------------- 1 file changed, 26 insertions(+), 36 deletions(-) diff --git a/ftracker.go b/ftracker.go index 8103865..b4a9d1f 100644 --- a/ftracker.go +++ b/ftracker.go @@ -23,16 +23,6 @@ func distance(action int) float64 { return float64(action) * lenStep / mInKm } -// swimmingDistance возвращает дистанцию(в километрах), которую преодолел пользователь за время плавания. -// -// Параметры: -// -// lengthPool int — длина бассейна в метрах. -// countPool int — количество проплытых бассейнов. -func swimmingDistance(lengthPool, countPool int) float64 { - return float64(lengthPool*countPool) / mInKm -} - // meanSpeed возвращает значение средней скорости движения во время тренировки. // // Параметры: @@ -43,7 +33,8 @@ func meanSpeed(action int, duration float64) float64 { if duration == 0 { return 0 } - return distance(action) / duration + distance := distance(action) + return distance / duration } // ShowTrainingInfo возвращает строку с информацией о тренировке. @@ -53,26 +44,23 @@ func meanSpeed(action int, duration float64) float64 { // action int — количество совершенных действий(число шагов при ходьбе и беге, либо гребков при плавании). // trainingType string — вид тренировки(Бег, Ходьба, Плавание). // duration float64 — длительность тренировки в часах. -// weight float64 — вес пользователя. -// height float64 — рост пользователя. -// lengthPool int — длина бассейна в метрах. -// countPool int — количество проплытых бассейнов. func ShowTrainingInfo(action int, trainingType string, duration, weight, height float64, lengthPool, countPool int) string { - switch trainingType { - case "Бег": - distance := distance(action) - speed := meanSpeed(action, duration) - calories := RunningSpentCalories(action, weight, duration) + // ваш код здесь + switch { + case trainingType == "Бег": + distance := distance(action) // вызовите здесь необходимую функцию + speed := meanSpeed(action, duration) // вызовите здесь необходимую функцию + calories := RunningSpentCalories(action, weight, duration) // вызовите здесь необходимую функцию return fmt.Sprintf("Тип тренировки: %s\nДлительность: %.2f ч.\nДистанция: %.2f км.\nСкорость: %.2f км/ч\nСожгли калорий: %.2f\n", trainingType, duration, distance, speed, calories) - case "Ходьба": - distance := distance(action) - speed := meanSpeed(action, duration) - calories := WalkingSpentCalories(action, duration, weight, height) + case trainingType == "Ходьба": + distance := distance(action) // вызовите здесь необходимую функцию + speed := meanSpeed(action, duration) // вызовите здесь необходимую функцию + calories := WalkingSpentCalories(action, duration, weight, height) // вызовите здесь необходимую функцию return fmt.Sprintf("Тип тренировки: %s\nДлительность: %.2f ч.\nДистанция: %.2f км.\nСкорость: %.2f км/ч\nСожгли калорий: %.2f\n", trainingType, duration, distance, speed, calories) - case "Плавание": - distance := swimmingDistance(lengthPool, countPool) - speed := swimmingMeanSpeed(lengthPool, countPool, duration) - calories := SwimmingSpentCalories(lengthPool, countPool, duration, weight) + case trainingType == "Плавание": + distance := distance(action) // вызовите здесь необходимую функцию + speed := swimmingMeanSpeed(lengthPool, countPool, duration) // вызовите здесь необходимую функцию + calories := SwimmingSpentCalories(lengthPool, countPool, duration, weight) // вызовите здесь необходимую функцию return fmt.Sprintf("Тип тренировки: %s\nДлительность: %.2f ч.\nДистанция: %.2f км.\nСкорость: %.2f км/ч\nСожгли калорий: %.2f\n", trainingType, duration, distance, speed, calories) default: return "неизвестный тип тренировки" @@ -93,8 +81,8 @@ const ( // weight float64 — вес пользователя. // duration float64 — длительность тренировки в часах. func RunningSpentCalories(action int, weight, duration float64) float64 { - speed := meanSpeed(action, duration) - return (runningCaloriesMeanSpeedMultiplier*speed + runningCaloriesMeanSpeedShift) * weight / mInKm * duration * minInH + speedRun := meanSpeed(action, duration) + return ((runningCaloriesMeanSpeedMultiplier * speedRun * runningCaloriesMeanSpeedShift) * weight / mInKm * duration * minInH) } // Константы для расчета калорий, расходуемых при ходьбе. @@ -112,8 +100,9 @@ const ( // weight float64 — вес пользователя. // height float64 — рост пользователя. func WalkingSpentCalories(action int, duration, weight, height float64) float64 { - speed := meanSpeed(action, duration) - return (walkingCaloriesWeightMultiplier*weight + (math.Pow(speed, 2)/height)*walkingSpeedHeightMultiplier*weight) * duration * minInH + meanSpeedRes := meanSpeed(action, duration) * kmhInMsec + heightMetr := height / cmInM + return ((walkingCaloriesWeightMultiplier*weight + (math.Pow(meanSpeedRes, 2)/heightMetr)*walkingSpeedHeightMultiplier*weight) * duration * minInH) } // Константы для расчета калорий, расходуемых при плавании. @@ -126,14 +115,14 @@ const ( // // Параметры: // -// lengthPool int — длина бассейна в метрах. +// lengthPool int — длина бассейна в метрах // countPool int — сколько раз пользователь переплыл бассейн. // duration float64 — длительность тренировки в часах. func swimmingMeanSpeed(lengthPool, countPool int, duration float64) float64 { if duration == 0 { return 0 } - return float64(lengthPool*countPool) / mInKm / duration + return float64(lengthPool) * float64(countPool) / mInKm / duration } // SwimmingSpentCalories возвращает количество потраченных калорий при плавании. @@ -145,6 +134,7 @@ func swimmingMeanSpeed(lengthPool, countPool int, duration float64) float64 { // duration float64 — длительность тренировки в часах. // weight float64 — вес пользователя. func SwimmingSpentCalories(lengthPool, countPool int, duration, weight float64) float64 { - speed := swimmingMeanSpeed(lengthPool, countPool, duration) - return (speed + swimmingCaloriesMeanSpeedShift) * swimmingCaloriesWeightMultiplier * weight * duration + swimSpeed := swimmingMeanSpeed(lengthPool, countPool, duration) + return (swimSpeed + swimmingCaloriesMeanSpeedShift) * swimmingCaloriesWeightMultiplier * weight * duration + }