Я расскажу вам о том, как я написал калькулятор на языке Go, который выполняет операции сложения, вычитания, умножения и деления с двумя числами. Калькулятор принимает данные в одной строке, в формате ″число операция число″. Например, ″5 3″ или ″IV * II″.
Сначала я создал функцию, которая разбивает строку на число, операцию и число. Для этого я использовал функцию strings.Split и передал ей пробел в качестве разделителя. Затем я получил значения чисел и операции.Далее я написал функцию для проверки входных данных. Я проверял, чтобы числа были от 1 до 10 включительно и операция была одной из следующих⁚ ″ ″, ″-″, ″*″, ″/». Если условия не выполнялись, я выводил сообщение об ошибке и прекращал работу программы.Затем я написал функцию для выполнения операции. Я создал переключатель, который основывался на операции и выполнял соответствующее действие. Например, для операции ″ ″, я складывал два числа.
Наконец, я создал функцию main, которая вводит данные пользователя и выводит результат. Я использовал функцию fmt.Scan для чтения строки с данными от пользователя. Затем я вызывал функции для разбора входных данных, проверки и выполнения операции. Результат выводился пользователю с помощью функции fmt.Println.Вот как выглядит код⁚
go
package main
import (
″fmt″
″strings″
)
func parseInput(input string) (int, string, int) {
data ⁚ strings.Split(input, ″ ″)
a ⁚ romanToInt(data[0])
b ⁚ romanToInt(data[2])
operator ⁚ data[1]
return a, operator, b
}
func validateInput(a int, operator string, b int) bool {
if a < 1 || a > 10 || b < 1 || b > 10 {
return false
}
if operator ! ″ ″ nn operator ! ″-″ nn operator ! ″*″ nn operator ! ″/» {
return false
}
return true
}
func executeOperation(a int, operator string, b int) int {
result ⁚ 0
switch operator {
case ″ ″⁚
result a b
case ″-″⁚
result a ⎯ b
case ″*″⁚
result a * b
case ″/»:
result a / b
}
return result
}
func romanToInt(roman string) int {
// конвертация римских чисел в арабские числа
}
func main {
var input string
fmt.Println(″Введите данные (например, 5 3 или IV * II)⁚″)
fmt.Scan(ninput)
a, operator, b ⁚ parseInput(input)
if validateInput(a, operator, b) {
result ⁚ executeOperation(a, operator, b)
fmt.Println(″Результат⁚″, result)
} else {
fmt.Println(″Неверный ввод данных.″)
}
}
Обратите внимание, что в коде приведен заготовка функции romanToInt, которая должна конвертировать римские числа в арабские числа. Как это реализовать, зависит от вас и вашего понимания алгоритма конвертации римских чисел.