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

التحويل من صورة infix الي صورة postfix

مغلق
بدأه الساهر2004 في 21 ديسمبر 2005 · 4 رد · 1,460 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بسم الله الرحمن الرحيم

اولا ابدء بتحية الاسلام سلام عليكم ورحمة الله وبركات

يا جماعة كيف احول من صورة infix الي صورة postfix انا بصراح حاولة ولكن ما عندي اي معلومة عن كيفية التحويل وارجوا من ذوي الخبر ان لايبخل علي و جزاكم الله خيرا .

وسوف ادعي لمن يساعدني.

#2

و عليكم السلام :D

أولا للتحويل من صورة infex الى ال postfix لابد من بناء ما يسمى بالستاك في البداية

stack 2: الأولى يتم تخزين العوامل فيها OPERANDS وهي التي ستكون فيها النتيجة النهائية ... الثانية سيتم تخزين الاشارات فيها /*+-.....

سيقرأ الexpression قي البداية على انه ٍString ويبدأ بقراءة حرف حرف فاذا كان معامل أضافة في الأولى واذا كان اشارة:

1- اذا كانت الأشارة المضافة اكبر في الأولوية من السابقة لها والمخزنة في اخر الستاك تضاف الجديدة دون اي تغيير :o

2- اذا كانت المضافة اقل أو مساوية في الأولوية نعمل( pop ( top ونضيف المسحوبة الى ستاك المعاملات والجديدة تضاف الى ستاك الإشارة :blink:

هذه هي الطريقة ........ وأرجو ان تكون المعلومات كافية :rolleyes:

أظن انك الآن تستطيع البدء :lol:

سلام

Computer Engineer

2007

"اللهم يا مثبت القلوب ثبت قلبي على دينك "

ولدتك امك باكيا والناس حولك يضحكون سرورا

فافعل لنفسك ان تكون اذا بكوا في يوم موتك ضاحكا مسرورا

#3

والذي لا يساعد، ألا تدعي له أيضاً :( !!!!!

على كل الأحوال، هذا البرنامج البسيط كنت قد عملته منذ زمن وفي بداية تعلمي للجافا للتحويل من Prefix إلى Postfix، لعلك تستفيد منه.

class MathFunction{
	public String function;
	public MathFunction(String function){
  this.function = function;
	}
	public int examineCase(int index){
  char c = function.charAt(index);
  if (isOperator(c))
 	 return 1;
  else if (isChar(c))
 	 return 2;
  else if (isNumber(c))
 	 return 3;
  else
 	 return 0;
	}
	public int examineCase(char c){
  if (isOperator(c))
 	 return 1;
  else if (isChar(c))
 	 return 2;
  else if (isNumber(c))
 	 return 3;
  else
 	 return 0;
	}
	public boolean isOperator(char c){
  if (c == '+' || c == '-' || c == '*' || c == '/')
 	 return true;
  return false;
	}
	public boolean isChar(char c){
  if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z'))
 	 return true;
  return false;
	}
	public boolean isNumber(char c){
  if (c >= '0' && c <= '9')
 	 return true;
  return false;
	}
	private String charToString(char c){
  char[] ch = {c};
  String s = new String(ch);
  return s;
	}
	private int firstOperandLen(String statement){
  switch(examineCase(statement.charAt(0))){
  case 1:
 	 int len = 0;
 	 len = firstOperandLen(statement.substring(1));
 	 len += firstOperandLen(statement.substring(len + 1));
 	 return ++len;
// 	 return firstOperandLen(statement.substring(firstOperandLen(statement.substring(1)) + 1)) + 1;
  default:
 	 return 1;
  }
	}
	public String fromPrefixToPostfix(String statement){
  String postFunc;
  char operator;
  switch(examineCase(statement.charAt(0))){
  case 1:
 	 operator = statement.charAt(0);
 	 postFunc = fromPrefixToPostfix(statement.substring(1));
 	 postFunc += fromPrefixToPostfix(statement.substring(postFunc.length() + 1));
 	 postFunc += operator;
 	 return postFunc;
  default:
 	 return charToString(statement.charAt(0));
  }
	}
	public String fromPrefixToPostfix(){
  return fromPrefixToPostfix(function);
	}
}
public class TestConvertMathFunction{
	public static void main(String[] args){
  String s = "*+xy-wz";
  MathFunction mf = new MathFunction(s);
  System.out.println("Prefix mathematical function is: " + mf.function);
  s = mf.fromPrefixToPostfix();
  System.out.println("Postfix mathematical function is: " + s);
	}
}
#4

في الحقيقة اخي الكريم قد طلب مني في الجامعة قبل حوالي 7 أشهر مشروع للتحويل

من Infix إلى Postfix واستخدمنا فيه ما يسمى ب Stack فإذا أردت الكود الخاص به

فإني أطلب منك أن تمهلني يومان حتى أجهز الكود

ولك كل الشكر والتوفيق

#5

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

هذا الموضوع مغلق.

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