Напиши Калькулятор на GOlang, который умеет выполнять операции сложения, вычитания, умножения и деления с двумя числами: a + b, a – b, a * b, a / b. Данные передаются в одну строку (смотри пример ниже). Решения, в которых каждое число и арифметическая операция передаются с новой строки, считаются неверными.
package main
import (
"fmt"
"strconv"
"strings"
)
func main() {
expression := "4 + 2"
operator := getOperator(expression)
operands := getOperands(expression, operator)
result := calculate(operands[0], operands[1], operator)
fmt.Printf("%f %s %f = %fn", operands[0], operator, operands[1], result)
}
func getOperator(expression string) string {
tokens := strings.Split(expression, " ")
return tokens[1]
}
func getOperands(expression string, operator string) []float64 {
tokens := strings.Split(expression, operator)
operand1, _ := strconv.ParseFloat(strings.TrimSpace(tokens[0]), 64)
operand2, _ := strconv.ParseFloat(strings.TrimSpace(tokens[1]), 64)
return []float64{operand1, operand2}
}
func calculate(operand1 float64, operand2 float64, operator string) float64 {
switch operator {
case "+":
return operand1 + operand2
case "-":
return operand1 - operand2
case "*":
return operand1 * operand2
case "/":
return operand1 / operand2
default:
panic("Invalid operator")
}
}
Данный код разбивает строку на токены, извлекает оператор и операнды, затем вызывает функцию calculate для выполнения операции и выводит результат.
Пример использования:
expression := "4 + 2"
operator := getOperator(expression)
operands := getOperands(expression, operator)
result := calculate(operands[0], operands[1], operator)
fmt.Printf("%f %s %f = %fn", operands[0], operator, operands[1], result)
Результатом этого кода будет вывод:
4.000000 + 2.000000 = 6.000000
Нажимая «Регистрация» или «Войти через Google», вы соглашаетесь с Публичной офертой, даете Согласие на обработку персональных данных, а также подтверждаете что вам есть 18 лет
Нажимая «Регистрация» или «Войти через Google», вы соглашаетесь с Публичной офертой, даете Согласие на обработку персональных данных, а также подтверждаете что вам есть 18 лет