رفتن به مطلب

نوشتن الگوریتمی برای معکوس کردن عبارت میانوندی


saye7474

ارسال های توصیه شده

ی تیکه از برنامه ام مونده.:{میخوام ی الگوریتم برای معکوس کردن ی عبارت میانوندی بنویسم }مث :

12+7^3+2*4

 

ب

4*2+3^7+ 12

 

 

بهم کنید...................

 

به وسیله کدوم زبان برنامه نویسی؟

لینک به دیدگاه

تبدیل infix به postfix در جاوا

 


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;
case '*':
case '/':
gotOper(ch, 2);
break;
case '(':
theStack.push(ch);
break;
case ')':
gotParen(ch);
break;
default:
output = output + ch;
break;
}
}
while (!theStack.isEmpty()) {
output = output + theStack.pop();
}
System.out.println(output);
return output;
}
public void gotOper(char opThis, int prec1) {
while (!theStack.isEmpty()) {
char opTop = theStack.pop();
if (opTop == '(') {
theStack.push(opTop);
break;
}
else {
int prec2;
if (opTop == '+' || opTop == '-')
prec2 = 1;
else
prec2 = 2;
if (prec2 < prec1) {
theStack.push(opTop);
break;
}
else
output = output + opTop;
}
}
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);
}
}
}

 

 

لینک به دیدگاه

برای تبدیل infix به postfix توی یه درخت دودویی , ابتدا برگها ، بعد ریشه ها را پیمایش باید بکنی در حالت تبدیل infix به prefix هم باید ریشه بعد برگها رو پیمایش کنی

تو کتاب ساختمان داده ها خوب توضیح داده چطوری با پشته(stack) اینا رو پیاده سازی کنی

ولی اینی که مثال زدی نه پیش وند نه پس وند :ws52:

لینک به دیدگاه
برای تبدیل infix به postfix توی یه درخت دودویی , ابتدا برگها ، بعد ریشه ها را پیمایش باید بکنی در حالت تبدیل infix به prefix هم باید ریشه بعد برگها رو پیمایش کنی

تو کتاب ساختمان داده ها خوب توضیح داده چطوری با پشته(stack) اینا رو پیاده سازی کنی

ولی اینی که مثال زدی نه پیش وند نه پس وند :ws52:

ممنونم سارا جووووون

ب زبان c#نتونستم پیدا کنم خواستم خودم بنویسم تیکه اول واخرش ی معکوس میخاد

عبارت میریزی تو پشته از اخر پیمایش میکنی نمیدونستم الگوریتمش چطوریه؟؟؟؟؟؟؟؟؟؟؟؟؟؟

بعدش مث پسوندی عمل میکنی

ج نهایی ی معکوس میخاد

لینک به دیدگاه

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

×
×
  • اضافه کردن...