Программа-калькулятор ООП [закрыта]C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Программа-калькулятор ООП [закрыта]

Сообщение Anonymous »

Я создаю калькулятор в стиле ООП C++. Я сделал 3 класса. UserInterface, который отвечает за ввод и вывод данных пользователя. Расчет, отвечающий за логику Калькулятора. AdvancedCalculation, который наследуется от Calculation и добавляет в калькулятор больше операций.
Калькулятор функционален, однако я хотел иметь возможность писать хороший код, а не просто функциональный код.
Мне интересно, есть ли способ изменить класс вычислений, чтобы добавление новых типов операций, таких как: pow(), sqrt, log, sin и т. д., было бы более простым и удобным, в основном оператор переключения в Класс расчета.
Вот код для всех трех классов:

Код: Выделить всё

#pragma once
#include "AdvancedCalculation.h"

class UserInterface {
private:
AdvancedCalculation C;
protected:
double num1;
double num2;
string op;

double result;
char input;

public:

void baseProgram() {
using namespace std;
do {
cout  num1;

C.setNum1(num1);

cout  op;

C.setOp(op);

cout  num2;

C.setNum2(num2);

C.logic();

cout num1 = num1;
}

void setNum2(double num2) {
this->num2 = num2;

}
void setOp(string op) {
transform(op.begin(), op.end(), op.begin(), ::tolower);
this->op = op;
}

double getResult() {
return result;
}

protected:
double num1;
double num2;
string op;
double result;
vector listOfOperators = {
{
{"+", "plus", "add"},
{"-", "minus"},
{"*", "multiply", "multiply by", "multiplied by"},
{"/", "divide"},
{"^", "power", "power to"},
{"s", "squareroot", "square root", "square root of"}
}
};

void Addition() {
result = num1 + num2;
}
void Subtraction() {
result = num1 - num2;
}
void Multiplication() {
result = num1 * num2;
}
void Division() {
result = num1 / num2;
}

void simplifiyOp() {
for (auto operatorType : listOfOperators) {
for (string wording : operatorType) {
if (op == wording) {
op = operatorType[0];
break;
}
}
}
}
private:
void BaseCalculator() {
switch (op[0]) {
case '+':
Addition();
break;
case '-':
Subtraction();
break;
case '*':
Multiplication();
break;
case '/':
Division();
break;
default:
break;
}
}
};

#pragma once
#include "Calculation.h"

class AdvancedCalculation : public Calculation
{
public:
void logic() {
simplifiyOp();
BaseCalculator();
}
protected:

void Powers() {
result = pow(num1, num2);
}
void Square() {
result = pow(num1, 1 / num2);
}

void BaseCalculator() {
switch (op[0]) {
case '+':
Addition();
break;
case '-':
Subtraction();
break;
case '*':
Multiplication();
break;
case '/':
Division();
break;
case '^':
Powers();
break;
case 's':
Square();
break;
default:
break;
}
}
};

Я пытался использовать memcpy(), чтобы скопировать op[0] и использовать его в функции, которая могла бы принимать любой оператор, но это не помогло Это действительно работает так, как ожидалось. Я просмотрел несколько руководств по ООП в надежде найти какую-нибудь функцию, которая поможет мне получить желаемый результат, но бесполезно.

Подробнее здесь: https://stackoverflow.com/questions/793 ... or-program
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Программа-калькулятор ООП [перенесено]
    Anonymous » » в форуме C++
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous
  • Калькулятор SWP и калькулятор шага [закрыто]
    Anonymous » » в форуме Php
    0 Ответы
    20 Просмотры
    Последнее сообщение Anonymous
  • Калькулятор SWP и калькулятор шага [закрыто]
    Anonymous » » в форуме Html
    0 Ответы
    20 Просмотры
    Последнее сообщение Anonymous
  • Калькулятор SWP и калькулятор шага [закрыто]
    Anonymous » » в форуме CSS
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous
  • Калькулятор SWP и калькулятор шага [закрыто]
    Anonymous » » в форуме Javascript
    0 Ответы
    13 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C++»