Программа перестает работать после того как пользователь ввел пример
Пожалуйста исправите программу. Программа калькулятор. На golang
Пользователь вводит число 1 затем символ и число 2 после чего числа 1 и 2 конвертируются из строк в целочисленные данные затем происходит вычисление с оператором который пользователь ввел и выводится результат
Программа перестает работать после того как пользователь ввел пример. Например: 10 + 34
package main
import (
"fmt"
"log"
"strconv"
)
func main() {
fnum := "0"
snum := "0"
var symbol string
var result int
fmt.Println("\nHello user_name")
fmt.Println("Please enter first number and symbol(+,-,*,/) and yet number")
fmt.Scanf("%s", &fnum, &snum, &symbol)
res1, err := strconv.Atoi(fnum)
if err != nil {
log.Fatal(err)
}
res2, err := strconv.Atoi(snum)
if err != nil {
log.Fatal(err)
}
switch symbol {
case "+":
result = res1 + res2
fmt.Print(result)
case "-":
result = res1 - res2
fmt.Print(result)
case "*":
result = res1 * res2
fmt.Print(result)
case "/":
result = res1 / res2
fmt.Print(result)
}
}
Ответы (1 шт):
Программа не перестаёт работать. Она отрабатывает но не находит в switch нужную ветку по причине того, что вы неправильно указали количество и порядок параметров в Scanf. Простейший путь это исправить - fmt.Scanf("%s%s%s", &fnum, &symbol, &snum). А лучше слегка оптимизировать код и возложить на Scanf ответственность о сообщении об ошибках:
var (
res1 int
res2 int
result int
symbol string
)
fmt.Println("\nHello user_name")
fmt.Println("Please enter first number and symbol(+,-,*,/) and yet number")
_, err := fmt.Scanf("%d%s%d", &res1, &symbol, &res2)
if err != nil {
log.Fatal(err)
}
switch symbol {
...
}