Сделать калькулятор на языке Go.
Калькулятор умеет работать только с целыми числами.
Калькулятор умеет работать только с арабскими или римскими цифрами одновременно, при вводе пользователем строки вроде 3 + II калькулятор должен указать на ошибку и прекратить работу.
type ArabNum struct {
Value int
}
type RomanNum struct {
Value string
}
2. Разделение входной строки на числа и операцию.
Для того чтобы разделить строку на числа и операцию, можно использовать функцию Split из пакета strings. Данная функция разделит входную строку на срез строк по указанному разделителю.
Пример кода:
input := "3 + 2"
values := strings.Split(input, " ")
num1 := values[0] // первое число в выражении
oper := values[1] // операция
num2 := values[2] // второе число в выражении
3. Проверка введенных чисел и операции.
Необходимо проверить, являются ли введенные числа и операция корректными. Для этого можно использовать условные операторы или функции.
Пример кода:
if !isValidNumber(num1) {
// обработка ошибки
}
if !isValidNumber(num2) {
// обработка ошибки
}
if !isValidOperator(oper) {
// обработка ошибки
}
4. Определение типа чисел (арабские или римские) и выполнение операции.
Для определения типа чисел (арабские или римские) можно воспользоваться функцией isArabic, которая будет проверять, состоит ли число только из цифр. В зависимости от типа чисел, можно использовать соответствующую операцию.
Если числа в арабской нотации, то для выполнения арифметических операций можно использовать функции сложения, вычитания, умножения и деления из стандартной библиотеки Go.
Если числа в римской нотации, то для выполнения арифметических операций можно создать функции сложения, вычитания, умножения и деления в соответствии с правилами римской арифметики.
Пример кода:
var result int
if isArabic(num1) && isArabic(num2) {
// числа в арабской нотации
num1Int, _ := strconv.Atoi(num1)
num2Int, _ := strconv.Atoi(num2)
switch oper {
case "+":
result = num1Int + num2Int
case "-":
result = num1Int - num2Int
case "*":
result = num1Int * num2Int
case "/":
result = num1Int / num2Int
default:
// обработка ошибки
}
} else if isRoman(num1) && isRoman(num2) {
// числа в римской нотации
num1Roman := RomanNum{Value: num1}
num2Roman := RomanNum{Value: num2}
switch oper {
case "+":
result = addRoman(num1Roman, num2Roman)
case "-":
result = subtractRoman(num1Roman, num2Roman)
case "*":
result = multiplyRoman(num1Roman, num2Roman)
case "/":
result = divideRoman(num1Roman, num2Roman)
default:
// обработка ошибки
}
} else {
// обработка ошибки
}
5. Обработка ошибок и вывод результата.
В случае, если введенные числа или операция некорректны, необходимо обработать ошибку и вывести информацию пользователю. В случае успешного выполнения операции, нужно вывести полученный результат.
Пример кода:
fmt.Println(result)
Это основные шаги, которые можно выполнить для реализации калькулятора на языке Go. Конкретная реализация может отличаться в зависимости от требований и ограничений по функционалу и вводу-выводу.Нажимая «Регистрация» или «Войти через Google», вы соглашаетесь с Публичной офертой, даете Согласие на обработку персональных данных, а также подтверждаете что вам есть 18 лет
Нажимая «Регистрация» или «Войти через Google», вы соглашаетесь с Публичной офертой, даете Согласие на обработку персональных данных, а также подтверждаете что вам есть 18 лет