منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : حساب مقدار جبرى فىTEXT
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
الصفحات : 1 2
كلنا يعرف أن المقدار 5 + 2 * 9 يساوى 23
وكلنا يعرف بسهولة كتابة الكود الذى يحسب هذا المقدار
كود :
X = 9 * 2 + 5
       PRINT X

ولكنى اريد الكود الذى يحسب هذا المقدار من خلال Text أو Label كتبه المستخم فيه
ارجو تعديل المثال المرفق

ولكم ألف شكر

تفضل هل هذا ما تريده


HeartHeartHeartHeartHeart
ليس هذا ما أريد
انك لم تسمح للمستخدم بتغيير أى علامة رياضية
لم تسمح الا بتغيير الأرقام فقط ( وهذا كوده معلوم من البداية)

ولكم ألف شكر
كود :
If Text2.Text = "+" Then X1 = Val(Text1.Text) + Val(Text3.Text)
If Text2.Text = "-" Then X1 = Val(Text1.Text) - Val(Text3.Text)
If Text2.Text = "*" Then X1 = Val(Text1.Text) * Val(Text3.Text)
If Text2.Text = "\" Then X1 = Val(Text1.Text) \ Val(Text3.Text)
If Text4.Text = "+" Then X2 = X1 + Val(Text5.Text)
If Text4.Text = "-" Then X2 = X1 - Val(Text5.Text)
If Text4.Text = "*" Then X2 = X1 * Val(Text5.Text)
If Text4.Text = "\" Then X2 = X1 \ Val(Text5.Text)

X = X2
Print X
هذا هو ضمن كوماند 2
تفضل أخي هذا المثال
بارك الله فيكم أجمعين
ولكم ألف شكر
label.caption=text1*(text2+text3nRolleyes
ولكن الكودين غير صحيححين دائمآ
جربا مثلا حساب المقدار 5 * 2 + 8
سيعطى النتيجة 50 ولكن النتيجة الصحيحة طبعآ 18

ولكم ألف شكر
السلام عليكم...

تحليل مثل هذه التعبيرات بشكل مباشر صعب حتى و إن كان التعبير بسيطاً بسب الحاجة إلى الاحتفاظ بقيم مؤقتة و أسبقية العمليات و وجود الأقواس ... إلخ.

لذلك يتم تحويل التعبير الرياضي العادي (الذي يسمى Infix أي ذو العوامل البينية بسبب وجود العوامل، أي إشارات الجمع و الطرح و غيرها، بين المعاملات، أي الأعداد) إلى تعبير ذي عوامل بعدية (Postfix) حيث تظهر العوامل بعد المعاملات، أو تعبير ذي عوامل قبلية (Prefix) حيث تظهر العوامل قبل المعاملات، ثم يتم تحليل و تقييم التعبير الناتج.

* مثلاً التعبير:
كود :
(5 ^ (2 + 1) - 25) * 2

يصبح كتعبير Postfix هكذا:
كود :
5 2 1 + ^ 25 - 2 *

* و التعبير التالي (نفس التعبير السابق و لكن دون أقواس):
كود :
5 ^ 2 + 1 - 25 * 2

يصبح كتعبير Postfix هكذا (لاحظ الفرق):
كود :
5 2 ^ 1 + 25 2 * -

* كل من عمليتي تحويل تعبير الـ Infix إلى تعبير Postfix (أو Prefix) و تقييم تعبير الـ Postfix (أو Prefix) تحتاج إلى استعمال ما يسمى يالـ Stack من أجل التخزين المؤقت للقيم والعوامل و العودة إلى نقاط التحليل السابقة.

في المرفقات برنامج لهذا الغرض، و هو يحتوي على اثنين من الـ Class Modules واحدة للـ Stack و الأخرى للـ Queue (أو الطابور - و هي غير مستعملة في المثال، لكني أرفقتها للفائدة إذ ربما يحتاجها أحد ما لاستعمالها في برنامج آخر). يوجد شرح بالعربي في الكود لبعض الأجزاء.

[attachment=1568]

نرجو الاستفادة و السلام.

الله ينور عليك
طول عمرنا بنقول " الأستاذ أستاذ "

إقتباس :يا أخ إسلام... لا داعي لهذا التضخيم! فأولاً شكر الناس على الخير من شكر الله. و ثانياً هذا المنتدى يزخر بالكفاءات البرمجية الممتازة و العبقرية، و فيه الكثيرون ممن هم خير مني و أفضل بمراحل.
الصفحات : 1 2