#include
using namespace std;
double stack[6] = { 0,0,0,0,0,0 };
double Calculate(double x, char oper, double y){
double res;
if(oper=='+') {
res = x + y;
return res;
stack[] = res;
}
else if (oper == '-') {
res = x - y;
return res;
stack[] = res;
}
else if (oper == '*') {
res = x * y;
return res;
stack[5] = res;
}
else if (oper == '/') {
res = x / y;
return res;
stack[5] = res;
}
else{
return 0;
stack[5] = 0;
}
}
int main()
{ double x = 0.0;
double y = 0.0;
char op;
double result = 0.0;
bool isOn = true;
int UserCh;
enum OPT { calc = 1,history = 2 };
while (isOn)
{
cout > y;
cout isOn;
break;
case history:
for (int x = 0;x
C/C++
История в калькуляторе
Добрый вечер! Необходимо создать логирование в калькуляторе, как можно этого добиться?Я пыталась создать переменную stack для храненения истории, но не уверена в качестве этого метода
добавить библиотеки
#include
#include
добавить вектор для хранения лога
vector logs;
функцию модифицировать
double Calculate(double x, char oper, double y)
{
double res;
ostringstream out;
out
#include
#include
#include
#include
using namespace std;
stack history_box;
stack reverse_box;
double calc(double x, char op, double y) {
if (op == '+') history_box.push(x + y);
else if (op == '-') history_box.push(x - y);
else if (op == '*') history_box.push(x * y);
else if (op == '/') history_box.push(x / y);
else return numeric_limits::quiet_NaN();
return history_box.top();
}
double undo() {
if (history_box.empty()) {
return numeric_limits::quiet_NaN();
}
auto top = history_box.top();
reverse_box.push(top);
history_box.pop();
return top;
}
double redo() {
if (reverse_box.empty()) {
return numeric_limits::quiet_NaN();
}
auto top = reverse_box.top();
history_box.push(top);
reverse_box.pop();
return top;
}
void flush() {
cin.ignore(numeric_limits::max(), '\n');
}
int main() {
double a, b, res = 0;
char op, choice;
bool run = true;
puts("\t1. Calc\n\t2. Result\n\t3. Undo\n\t4. Redo\n\t5. Exit");
while (true) {
cout a >> op >> b;
flush();
res = calc(a, op, b);
break;
case '2':
cout
Наверное зависит о того, каким образом ты будешь выводить эти логи.
Можно обычным массивом, на скорость выполнения особо то и не повлияет
Можно обычным массивом, на скорость выполнения особо то и не повлияет
Вроде должно работать, но я бы скорее взял push, pop и top, чтобы реализовать те же опции с меньшими потерями времени
Читал
Ни хрена не понял этот маразм
Ни хрена не понял этот маразм
Vovko Pidkova
Что именно не так?
Похожие вопросы
- Не могу разораться с калькулятором на языке СИ
- Как работает реальный калькулятор?
- Реализация Алгоритма калькулятора
- Разработать программу (калькулятор) на языке С++,
- Я попробовал сделать мини калькулятор. Но испытываю проблему.
- Зачем программистам история?
- Помогите розобратся с калькулятором citizen sdc-888t, вопрос внутри:
- Калькулятор ипотеки сбербанка
- Какой калькулятор хороший?
- Кнопка калькулятор на клавиатуре.
struct Counting
{
double LeftData;
double RightData;
char Operation;
double Result;
} cnt;
а потом vector <struct Counting> History;
cin >> cnt.LeftData;
cin >> cntRightData;
cin >> cnt.Operation;
Вычисления
cnt.Result= чему-то и потом
History.push_back(cnt);