تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[سؤال] كتابة كود
#1
write a complete c++ program that uses stack ADT in infix to post fix expressioin conversion, your program should ask the user to input an infix expression and then prints the corresponding postfix expression

example if input was: A+(B*C-(D/E-F)*G)*H
the the output will be 
ABC*DE/F-G*-H*+

ممكن حدا يساعدني بكتابة الكود ضروري  Big Grin
الرد }}}}
تم الشكر بواسطة:
#2
السلام عليكم ورحمة الله

أختي زهرة

هذا الحل موجود في الرابط التالي: Infix to Postfix expression

قمت بتجربته بواسطة ++Dev-C وهو عمل بشكل صحيح
PHP كود :
#include <iostream>
#include <sstream>
#include <stack>
#include <limits>
#include <string>
using namespace std;

int priority(char a) {
    
int temp;
    if (
== '^')
        
temp 1;
    else  if (
== '*' || == '/')
        
temp 2;
    else  if (
== '+' || == '-')
        
temp 3;
    return 
temp;
}

int main() {
    
string infix;
    
cout << "Enter an arithmetic expression: " << endl;
    
getline(cininfix);

    
stack<charoperator_stack;

    
stringstream output;

    for (
unsigned i 0infix.length(); i++) {
        if (
infix[i] == '+' || infix[i] == '-' || infix[i] == '*' || infix[i] == '/' || infix[i] == '^') {
            while (!
operator_stack.empty() && priority(operator_stack.top()) <= priority(infix[i])) {
                
output << operator_stack.top();
                
operator_stack.pop();
            }
            
operator_stack.push(infix[i]);
        } else if (
infix[i] == '(') {
            
operator_stack.push(infix[i]);
        } else if (
infix[i] == ')') {
            while (
operator_stack.top() != '(') {
                
output << operator_stack.top();
                
operator_stack.pop();
            }
            
operator_stack.pop();
        } else {
            
output << infix[i];
        }
    }

    while (!
operator_stack.empty()) {
        
output << operator_stack.top();
        
operator_stack.pop();
    }

    
cout << output.str() << endl;

    
cin.ignore(numeric_limits<streamsize>::max(), '\n');

    return 
0;

الرد }}}}
تم الشكر بواسطة: الشاكي لله


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم