Golang. Вывод суммы в рублях и копейках
Всем привет, только начал изучать go не ругайте сильно. Решил задачку, но думаю что есть более элегантное решение с выводом, подскажите пожалуйста как бы Вы решили ее.
Текст задачи:
Напишите программу, которая считывает строку и выводит ее предполагаемую цену, 1 символ = 23 копейки в следующем формате:
Y коп. - если цена не дотягивает до рубля.
X р. Y коп. - если цена превышает 1 рубль.
package main
import (
"fmt"
"unicode/utf8"
)
func main() {
var praic float64 = 0.23
var samplText string
var result int
fmt.Scan(&samplText)
result = utf8.RuneCountInString(samplText)
var resultRub float64 = float64(result) * praic
var RUB int = int(resultRub)
if resultRub > 1.00 {
fmt.Printf("%d р. %d коп.", int64(RUB), int((resultRub-float64(RUB))*100))
} else {
fmt.Printf("%d коп.", int(resultRub*100))
}
}
Ответы (2 шт):
Автор решения: чистов_n
→ Ссылка
Я бы сделал так:
package main
import (
"fmt"
"unicode/utf8"
)
func main() {
var samplText string
var result int // (1)
fmt.Scan(&samplText)
result = utf8.RuneCountInString(samplText) * 23
if result > 100 {
fmt.Printf("%d р. %d коп.\n", int(result/100), result%100)
} else {
fmt.Printf("%d коп.\n", result)
}
}
result
— кол-во копеек.
Автор решения: Norisaline
→ Ссылка
Думаю такой вариант тоже хорошо выглядит, Убираем лишние объявление переменных, вводим их в блок, и по хорошему тону убираем "else" вместо него пишем return и вне тела цикла выводим сообщение
package main
import (
"fmt"
"unicode/utf8"
)
func main() {
var (
simvol string
praice int
)
fmt.Scan(&simvol)
praice = utf8.RuneCountInString(simvol) * 23
if praice > 100 {
fmt.Printf("%d р. %d коп. \n", int(praice/100), praice%100)
return
}
fmt.Printf("%d коп. \n", praice)
}