Ну для начала нужно сформулировать, что такое "нормальный калькулятор" и какие примеры он должен решать)
Потом исходя из этого выбирать конкретный подход.
По нормальному тебе придётся как-то парсить математическое выражение и как-то его интерпретировать.
Для решения этой задачи вот тебе несколько тем, которые ты можешь покопать:
1. Префиксная, постфиксная, и инфиксная нотация. Для постфиксной очень легко написать калькулятор
2. Алгоритм сортировочной станции. Это про то как можно из инфиксной нотации сделать постфиксную
3. Абстрактные синтаксические деревья. Это про то как можно сделать что-то более сложное.