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

كيف أعمل Expression Evaluator

مغلق
بدأه omarharold85 في 6 يوليو 2005 · 8 رد · 511 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

:( أخواني :

حد من الماسترز يقدر يشرح لي كيف أعمل ExpressionEvaluator

#3

** all variables are 1-10 charcter long.

** all integers are at the range of -1000 to 1000.

** / the devision (example 7/3=2) . means the answer ternd into integer .

** the statment 1-80 charctar long .

** all statment are valid .

#4

???

هل انت تريد الrange بتاع كل من الint long short char

أو انت تريد

عند القسمة على الzero كيفية عمل exceptions

ولا اية؟؟

ممكن توضح اكتر علشان نقدر نساعدك

Muhammad Allam

Computer Science

@Resource(MappedURL="My Blog" )

#5

حدد مواصفات البرنامج كبرنامج .. و ليس كـ expresion evaluator

يعني افترض اننا لا نعرف ما معنى expression evaluator

ما اللذي تريد ان بفعله البرنامج بالظبط؟

#6

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

هذا البرنامج يقوم بقراءة كل سطر و التعرف على المجهول و المعلوم .

مثال :

sample input:

wedth=10+lenght;

lenght=20;

sample output;

variable value

----------- ------------

wedth 30

lenght 20

شكرا جزيلا

#7

اذا حللنا المشكلة سنجد ان هناك قسمين:

اولا متابعة اسماء المتغيرات و قيمة كل متغير.

ثانيا القيام بالعمليات الحسابية.

من اجل لمتابعة المتغيرات فأعتقد ان افضل شي هو قراءة الملف كاملا في البداية بحثا عن اسماء المتغيرات, و من ثم تخزين هذه الاسماء مع فيمها بطريقة ما .. مثلا باستخدام كلاس:

class Variable
{
    string name;
    double value;
};

طبعا يكون هناك عدد محدود من المتغيرات وراح تحتاج تخزنها في container, يعني مثلا مصفوفة (طريقة سيئة) او vector او list او map

اعتقد انسب شي لهذه الحالة هو std::map

اذا لم تسمع به من قبل فهذا درس عنها:

http://www.devhood.com/tutorials/tutorial_...tutorial_id=379

map< char*, Variable* > varMap;

بالتالي تستطيع تخزين المتغيرات مع اسمائها داخل الـ varMap و تستطيع بكل سهولة اضافة متغير جديد و معرفة قيمة اي متغير و تغييرها.

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

هذا التعبير الرياضي قد يكون مجرد رقم, او اسم لمتغير, او عملية رياضية تجمع عددا معينا من المتغيرات و الارقام.

اول ما يجب فعله هو استبدال المتغيرات بقيمها, بعدها سيصبح السطر مجرد عمليات رياضية على ارقام.

هنا تحتاج الى تقييم هذه العملية و هو امر ليس بالصعب لكنه ليس سهلا جدا.

المهم, على فرض انك قمت بتحليل التعبير الرياضي, فهنا تكون قد تخطيت اهم العقبات.

كل ما عليك الان هو المرور على الملف سطرا سطرا و القيام بالعمليات الرياضية و تخزين المتغيرات ..

و عندما تنتهي من الملف سيكون عندك كافة المتغيرات مع قيمها, فتقوم بالمرور عليها واحدا واحدا و تقوم باخراج اسمائها و قيمها.

طبعا هذه مجرد فكرة عامة (سطحية) اتمنى ان تفيدك ولو قليلا.

اذا احتاجيت تفاصيل اكثر انا جاهز. مع العلم اني لم اقم بعمل برنامج كهذا من قبل, و لكني قمت بكتابة برنامج يقوم بقراءة تعبير رياضي من قبيل

5 + 3 - 34 * ( 34 + 5 / 3 ) - 10

يعني ارقام و عمليات رياضية و أقواس, و يقوم البرنامج بتحليل السطر و اعطاء الناتج النهائي.

تم تعديل هذه المشاركة بواسطة hasan_aljudy في 7 يوليو 2005 في 23:33

#8

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

ممكن عن طريق stack

ومع الاخذ فى الاعتبار العلامة وأيضا الاسبقية فى العمليات الحسابية زى الضرب والقسمة

عندك ممكن تستخدم الpost fix or prefix

Muhammad Allam

Computer Science

@Resource(MappedURL="My Blog" )

#9

:rolleyes: أشكرك يأخي على هذه الفكرة , و الله كتير ساعدتني

تم تعديل هذه المشاركة بواسطة omarharold85 في 7 يوليو 2005 في 23:58

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

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