Mari Carmen نشر 17 نوفمبر 2020 أرسل تقرير نشر 17 نوفمبر 2020 #include<iostream> #include<string> #include<stack> using namespace std; bool isOperator(char ch) { if (ch == '+' || ch == '-' || ch == '*' || ch == '/' || ch == '%' || ch == '>' || ch == '<' || ch == '<=' || ch == '>=' || ch == '==' || ch == '!=' || ch == '&&' || ch == '||'||ch=='(') return true; else return false; } int precedence(char op) { if (op == '*' || op == '/' || op == '%') return 100; else if (op == '(') return 0; else if (op == '+' || op == '-') return 50; else if (op == '>' || op == '<' || op == '<=' || op == '>=') return 40; else if (op == '==' || op == '!=') return 30; else if (op == '&&') return 20; else if (op == '||') return 10; } double evaluate(double x, double y, char op) { if (op == '+') return y + x; else if (op == '-') return y - x; else if (op == '*') return y * x; else if (op == '/') if (x != 0) return y / x; else { cout << "divbyzero"; return 0; } else { cout << "invalid operator"; return -1; } } void main() { string exp; // infix cout << "input exp" << endl; getline(cin, exp); string postfix = ""; int j = 0; stack <char> s; for (int i = 0; i < exp.length(); i++) { if (exp[i] == '(') s.push(exp[i]); else if (exp[i] == ')') { while (!s.empty() && s.top() != '(') { postfix += s.top(); s.pop(); } //end while s.pop(); // to remove ( from stack } else if (exp[i] >= '0' && exp[i] <= '9') { postfix += exp[i]; } else if (isOperator(exp[i]) && s.empty()) { s.push(exp[i]); } else if (isOperator(exp[i]) && !s.empty()) { while (!s.empty() && precedence(exp[i]) <= precedence(s.top())) { postfix += s.top(); s.pop(); } s.push(exp[i]); } } while (!s.empty()) { postfix += s.top(); s.pop(); } cout << "postfix= " << postfix << endl; // Evaluation part stack <double> d; for (int i = 0; i < postfix.length(); i++) { if (!isOperator(postfix[i])) d.push(postfix[i]); else { double x = d.top(); d.pop(); double y = d.top(); d.pop(); double z = evaluate(x, y, postfix[i]); d.push(z); } }// end loop postfix double res = d.top(); d.pop(); cout << "Final result=" << res << endl; if (!d.empty()) cout << " Bad result" << endl; } يوجد عندي مشكله بل ضرب كيف ممكن احلها ... وكيف بقدر اعمل مقارنه بل عمليات مساوه او اكبر واصغر كما في صوره اقتباس
السؤال
Mari Carmen
يوجد عندي مشكله بل ضرب كيف ممكن احلها ... وكيف بقدر اعمل مقارنه بل عمليات مساوه او اكبر واصغر كما في صوره
0 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.