В этой статье блога мы рассмотрим десять эффективных методов создания программы-калькулятора на примерах кода. Независимо от того, новичок вы или опытный программист, эти методы помогут вам создать программу-калькулятор на различных языках программирования. Давайте погрузимся!
Метод 1: простые арифметические операции
Пример кода (Python):
def add(a, b):
return a + b
def subtract(a, b):
return a - b
def multiply(a, b):
return a * b
def divide(a, b):
return a / b
Метод 2: использование функции eval()
Пример кода (Python):
expression = input("Enter an expression: ")
result = eval(expression)
print("Result:", result)
Метод 3: использование операторов if-else
Пример кода (Java):
import java.util.Scanner;
public class Calculator {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("Enter operator (+, -, *, /): ");
char operator = scanner.next().charAt(0);
System.out.print("Enter two numbers: ");
double num1 = scanner.nextDouble();
double num2 = scanner.nextDouble();
double result;
if (operator == '+') {
result = num1 + num2;
} else if (operator == '-') {
result = num1 - num2;
} else if (operator == '*') {
result = num1 * num2;
} else if (operator == '/') {
result = num1 / num2;
} else {
System.out.println("Invalid operator!");
return;
}
System.out.println("Result: " + result);
}
}
Метод 4. Использование указателей функций
Пример кода (C++):
#include <iostream>
double add(double a, double b) {
return a + b;
}
double subtract(double a, double b) {
return a - b;
}
double multiply(double a, double b) {
return a * b;
}
double divide(double a, double b) {
return a / b;
}
int main() {
double num1, num2;
char op;
std::cout << "Enter operator (+, -, *, /): ";
std::cin >> op;
std::cout << "Enter two numbers: ";
std::cin >> num1 >> num2;
double (*operation)(double, double);
if (op == '+') {
operation = add;
} else if (op == '-') {
operation = subtract;
} else if (op == '*') {
operation = multiply;
} else if (op == '/') {
operation = divide;
} else {
std::cout << "Invalid operator!" << std::endl;
return 0;
}
double result = operation(num1, num2);
std::cout << "Result: " << result << std::endl;
return 0;
}
Метод 5: использование операторов Switch
Пример кода (C#):
using System;
class Calculator
{
static void Main()
{
Console.Write("Enter operator (+, -, *, /): ");
char op = Console.ReadLine()[0];
Console.Write("Enter two numbers: ");
double num1 = double.Parse(Console.ReadLine());
double num2 = double.Parse(Console.ReadLine());
double result;
switch (op)
{
case '+':
result = num1 + num2;
break;
case '-':
result = num1 - num2;
break;
case '*':
result = num1 * num2;
break;
case '/':
result = num1 / num2;
break;
default:
Console.WriteLine("Invalid operator!");
return;
}
Console.WriteLine("Result: " + result);
}
}
Метод 6: использование JavaScript Eval()
Пример кода (JavaScript):
let expression = prompt("Enter an expression: ");
let result = eval(expression);
console.log("Result:", result);
Метод 7: использование библиотек/фреймворков
Пример кода (Python с Tkinter):
from tkinter import *
def calculate():
expression = entry.get()
result = eval(expression)
label.config(text="Result: " + str(result))
root = Tk()
root.title("Calculator")
entry = Entry(root)
entry.pack()
button = Button(root, text="Calculate", command=calculate)
button.pack()
label = Label(root)
label.pack()
root.mainloop()
Метод 8: использование обратной польской нотации (RPN)
Пример кода (Python):
def evaluate_rpn(expression):
stack = []
operators = {
'+': lambda x, y: x + y,
'-':lambda x, y: x - y,
'*': lambda x, y: x * y,
'/': lambda x, y: x / y
}
for token in expression.split():
if token in operators:
y = stack.pop()
x = stack.pop()
result = operators[token](x, y)
stack.append(result)
else:
stack.append(float(token))
return stack[0]
expression = input("Enter an expression in RPN: ")
result = evaluate_rpn(expression)
print("Result:", result)
Метод 9: использование анализа рекурсивного спуска
Пример кода (Python):
def parse_expression(tokens):
value = parse_term(tokens)
while tokens and tokens[0] in ('+', '-'):
operator = tokens.pop(0)
term = parse_term(tokens)
if operator == '+':
value += term
elif operator == '-':
value -= term
return value
def parse_term(tokens):
value = parse_factor(tokens)
while tokens and tokens[0] in ('*', '/'):
operator = tokens.pop(0)
factor = parse_factor(tokens)
if operator == '*':
value *= factor
elif operator == '/':
value /= factor
return value
def parse_factor(tokens):
if tokens[0] == '(':
tokens.pop(0)
value = parse_expression(tokens)
tokens.pop(0)
return value
else:
return float(tokens.pop(0))
expression = input("Enter an expression: ")
tokens = expression.split()
result = parse_expression(tokens)
print("Result:", result)
Метод 10: использование алгоритма маневровой станции
Пример кода (Python):
def precedence(operator):
if operator in ('+', '-'):
return 1
elif operator in ('*', '/'):
return 2
else:
return 0
def infix_to_postfix(expression):
output = []
stack = []
for token in expression.split():
if token.isdigit():
output.append(token)
elif token in ('+', '-', '*', '/'):
while stack and precedence(stack[-1]) >= precedence(token):
output.append(stack.pop())
stack.append(token)
elif token == '(':
stack.append(token)
elif token == ')':
while stack and stack[-1] != '(':
output.append(stack.pop())
stack.pop()
while stack:
output.append(stack.pop())
return ' '.join(output)
def evaluate_postfix(expression):
stack = []
for token in expression.split():
if token.isdigit():
stack.append(token)
else:
y = float(stack.pop())
x = float(stack.pop())
if token == '+':
result = x + y
elif token == '-':
result = x - y
elif token == '*':
result = x * y
elif token == '/':
result = x / y
stack.append(str(result))
return stack[0]
infix_expression = input("Enter an infix expression: ")
postfix_expression = infix_to_postfix(infix_expression)
result = evaluate_postfix(postfix_expression)
print("Result:", result)
В этой статье мы рассмотрели десять различных методов создания программы-калькулятора: от простых арифметических операций до более сложных методов, таких как использование указателей функций, библиотек и алгоритмов. Эти примеры охватывают различные языки программирования, такие как Python, Java, C++, C#, JavaScript и другие. Не стесняйтесь выбирать метод, который соответствует вашим потребностям и предпочтениям языка программирования. Приятного кодирования!