:( أخواني :
حد من الماسترز يقدر يشرح لي كيف أعمل ExpressionEvaluator
:( أخواني :
حد من الماسترز يقدر يشرح لي كيف أعمل ExpressionEvaluator
حدد مواصفات ما تريد عمله بشي من التفصيل.
** 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 .
حدد مواصفات البرنامج كبرنامج .. و ليس كـ expresion evaluator
يعني افترض اننا لا نعرف ما معنى expression evaluator
ما اللذي تريد ان بفعله البرنامج بالظبط؟
السلام عليكم :
هذا البرنامج يقوم بقراءة كل سطر و التعرف على المجهول و المعلوم .
مثال :
sample input:
wedth=10+lenght;
lenght=20;
sample output;
variable value
----------- ------------
wedth 30
lenght 20
شكرا جزيلا
اذا حللنا المشكلة سنجد ان هناك قسمين:
اولا متابعة اسماء المتغيرات و قيمة كل متغير.
ثانيا القيام بالعمليات الحسابية.
من اجل لمتابعة المتغيرات فأعتقد ان افضل شي هو قراءة الملف كاملا في البداية بحثا عن اسماء المتغيرات, و من ثم تخزين هذه الاسماء مع فيمها بطريقة ما .. مثلا باستخدام كلاس:
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
:rolleyes: أشكرك يأخي على هذه الفكرة , و الله كتير ساعدتني
تم تعديل هذه المشاركة بواسطة omarharold85 في 7 يوليو 2005 في 23:58
هذا الموضوع مغلق.