الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

ارجو المساعد Convert From Infix To Post Fix

بدأه S0S020 في 30 أبريل 2008 · 3 رد · 1,791 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

هاااادى البرنامج عقدني بصراحه فارجومن الاعضاء المميزين والمحترفين المساعده وشكرا للجميع والف مبروك والله يديمها من فرحة

code:

import java.io.IOException;

public class InToPost {

private Stack theStack;

private String input;

private String output = "";

public InToPost(String in) {

input = in;

int stackSize = input.length();

theStack = new Stack(stackSize);

}

public String doTrans() {

for (int j = 0; j < input.length(); j++) {

char ch = input.charAt(j);

switch (ch) {

case '+':

case '-':

gotOper(ch, 1);

break; // (precedence 1)

case '*': // it's * or /

case '/':

gotOper(ch, 2); // go pop operators

break; // (precedence 2)

case '(': // it's a left paren

theStack.push(ch); // push it

break;

case ')': // it's a right paren

gotParen(ch); // go pop operators

break;

default: // must be an operand

output = output + ch; // write it to output

break;

}

}

while (!theStack.isEmpty()) {

output = output + theStack.pop();

}

System.out.println(output);

return output; // return postfix

}

public void gotOper(char opThis, int prec1) {

while (!theStack.isEmpty()) {

char opTop = theStack.pop();

if (opTop == '(') {

theStack.push(opTop);

break;

}// it's an operator

else {// precedence of new op

int prec2;

if (opTop == '+' || opTop == '-')

prec2 = 1;

else

prec2 = 2; if (prec2 < prec1) // if prec of new op less

{ // than prec of old

theStack.push(opTop); // save newly-popped op

break;

} else

// prec of new not less

output = output + opTop; // than prec of old

}

}

theStack.push(opThis);

}

public void gotParen(char ch){

while (!theStack.isEmpty()) {

char chx = theStack.pop();

if (chx == '(')

break;

else

output = output + chx;

}

}

public static void main(String[] args) throws IOException {

String input = "1+2*4/5-7+3/6";

String output;

InToPost theTrans = new InToPost(input);

output = theTrans.doTrans();

System.out.println("Postfix is " + output + '\n');

}

class Stack {

private int maxSize;

private char[] stackArray;

private int top;

public Stack(int max) {

maxSize = max;

stackArray = new char[maxSize];

top = -1;

}

public void push(char j) {

stackArray[++top] = j;

}

public char pop() {

return stackArray[top--];

}

public char peek() {

return stackArray[top];

}

public boolean isEmpty() {

return (top == -1);

}

}

}

#2

عفواً هل من الممكن أن نعرف ما هي المشكلة في البرنامج بالضبط؟

فحنوت ألثم جرحه الرعافَ فانتكأت جراحي..

وهمت على خدي الدموع فقلت يا روحي وراحي..

هلّا رحمتَ قلوبنا .. وعدلت عن هذا الرّواحِ ِ ..؟

فأجابني البطل المسجّى هازئاً بيَ .. باقتراحي

كفكف دموعك ليس في عبراتك الحرّى ارتياحي

هذي سبيلي .. إن صدقت محبتي .. فاحمل سلاحي

Sun Certified Java Programmer

#3

799355-1.jpg

البرنامج يعمل ..

.

#4

السلام عليكم ورخمة الله وبركاتة

وشكرا للمساعده وشكرا على الخدمات

بالنسبة للاخ:

فالكود هو عبارة عن كود تحويل من انفيكس الى بوست فيكس وعلى كل حال الكود الموجود هاااادى شغال لاني لخبط بين الاكواد iyadhoo

اما بالنسبة للاخ:

shado

شكرا لانك جربت الكود هاااادى الكود يا اخي العزيز حملة الرابط حقة بالغلط وانا اسف اما بالنسبة للكود الي انا ابغاه هو تحويل من انفيكس لبوستفيكس

بس بطريقة اخرى غير هاااادي الطريق فارجو منكم ومن جميع الزملاء الماعده في وجود كود عملية التحويل من انفيكس الى بوستفيكس

وشكرررررررررررررررررا

مواضيع مشابهة