سي بي يو
29-11-2007, 03:43 PM
السلام عليكم ورحمة الله وبركاته
اللي عنده كود برنامج يحول من postfix إلى infix باستخدام ++c
لا يبخل لأني محتاجته ضروري (تحسين درجة مادة تراكيب البيانات)
أوعلى الأقل الفكرة وأنا أكتب البرنامج..
والله اني حاولت لكن أحس اني بعيدة عن الحل!!
إذا ممكن قبل يوم السبت ..بليييييييييييييييز لاتخيبون أملي فيكم
الحـ العيوف ـلم
29-11-2007, 06:18 PM
ان شاء الله تلقينه
راح احول موضوعك للقسم المناسب حتى يتم مساعدتك من ذوي الخبره
ينقل لقسم سؤال وجواب بقاعة الاتصالات
سي بي يو
29-11-2007, 06:27 PM
مشكووووووورة والله اني احترت وين أحط الموضوع ...
Brens Darkins
29-11-2007, 07:15 PM
والله انا ماعندي اي فكره عن هالموضوع لكن لما مرت حبيت أساعدكـ واللي لقيته هذا هوو ..
أولا للتحويل من صورة infex الى ال postfix لابد من بناء ما يسمى بالستاك في البداية
stack 2: الأولى يتم تخزين العوامل فيها OPERANDS وهي التي ستكون فيها النتيجة النهائية ... الثانية سيتم تخزين الاشارات فيها /*+-.....
سيقرأ الexpression قي البداية على انه ٍString ويبدأ بقراءة حرف حرف فاذا كان معامل أضافة في الأولى واذا كان اشارة:
1- اذا كانت الأشارة المضافة اكبر في الأولوية من السابقة لها والمخزنة في اخر الستاك تضاف الجديدة دون اي تغيير
2- اذا كانت المضافة اقل أو مساوية في الأولوية نعمل( pop ( top ونضيف المسحوبة الى ستاك المعاملات والجديدة تضاف الى ستاك الإشارة http://www.arabteam2000-forum.com/style_emoticons/default/blink.gif
هذه هي الطريقة ........ وأرجو ان تكون المعلومات كافية http://www.arabteam2000-forum.com/style_emoticons/default/rolleyes.gif
أظن انك الآن تستطيع البدء http://www.arabteam2000-forum.com/style_emoticons/default/laugh.gif
سلام
على كل الأحوال، هذا البرنامج البسيط كنت قد عملته منذ زمن وفي بداية تعلمي للجافا للتحويل من 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(firstOperandLe n(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.l ength() + 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);
}
}
وهذا اللي لقيته واذا ماساعدك اقدر ابحث بعد على آمل الأفادهـ ..
موفقهـ أختي
ســلامـ
سي بي يو
30-11-2007, 12:24 PM
أولاً ..اعتذر من الاخ الحــــ العيوف ــلم لأني كنت اظنه مشرفة (مو واضح من الاسم)
ثانياً..مشكورة أختي على التفاعل وعدم التجاهل..
صحيح هو يستخدم فيه الستاك..وعندنا في المذكرة كود برنامج التحويل من infix إلى postfix ولكن المطلوب هو العكس؟؟
وبالنسبة للكود اللي كتبتيه أول ماشفته كنت ببكي لأني مافهمت ولااااااااكلمة منه ..بعدين عرفت انك كاتبته بالجافا...
أكرر الشكر لك ..ومازال الأمل فيك وفي الباقين موجود..
سي بي يو
30-11-2007, 12:30 PM
لاااااااااااااااااااااااااا...
بيغلقون المنتدى....مومعقول على حظي ...!!!!
والواجب ما يحتمل التأخير!!!!
وش الحل ؟؟
سي بي يو
03-12-2007, 06:54 PM
تمددت المدة إلى الأربعاء ..
فاللي يقدر يساعدني لا يبخل ..عشان ما أحس اني ضيعت درجاتي..