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

سؤال فني في البرمجه

مغلق
بدأه أحمد حمدان في 8 يونيو 2005 · 16 رد · 1,001 مشاهدة · في لغة Ms Visual Basic 6 وما قبلها من إصدارات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

الأخوه الكرام

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

يوجد لدي طلب معقد بعض الشئ وهو في المعادلات الحسابية

مثال على المطلوب :

إذا كان لديا حقل يحتوي على رقم صحيح وبه كسور مثل هذا : 9.75

المطلوب :

أريد أن أخذ هذا الرقم الصحيح لوحده والكسر لوحده

مثال على ذلك :

أن أقوم بعمل حقلين حقل يأخذ الرقم الصحيح والحقل الأخر يأخذ الكسر

الحقل الأول = 9

الحقل الثاني = 0.75

الرجاء ساعدوني وبأسرع وقت جزاكم الله خيرا

والله الموفق

#2

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

انا لااعرف دالة لاخذ الكسر فقط لكن هذه الطريقة ستفى بالغرض ان شاء الله

X1 = Int(9.75)
X2 = Right("9.75", Len("9.75") - InStr(1, "9.75", ".", vbTextCompare))

X1 : الجزء الصحيح من الرقم

X2 : الجزء العشرى

وان كان احد الاخوة الاعضاء يعرف دالة لاخذ الكسر فقط فلايبخل علينا بالمعلومة :rolleyes:

تم تعديل هذه المشاركة بواسطة GHOST2010 في 8 يونيو 2005 في 15:00

إن قلت قال الله قال رسولـه همزوك همز المنكر المتعالي
أو قلت قد قال الصحابة والألـى تبعاً لهم بالقول والأعمال
أو قلت قـال الشافعي وأحمد و أبو حنيفة والإمام الغالي
صدوا عن وحي الإله ودينـه واحتالوا على حرام الله بالإحلال
يا أمةً لعبت بدين نبيها كتلاعب الصبيان في الأوحال
حاشا رسول الله يحكم بالهوى تلك إذاً حكومة الضلال

feed.1.gif

#3

you can put every number in array then

read array one by one if u find char'.' then put the number after it in variable and before '.' in another variable

تم تعديل هذه المشاركة بواسطة dash في 8 يونيو 2005 في 15:02

#4

بكل بساطة تقوم بالتالي

لنفرض ان الرقم هو 9.75

اعلا نات المتغيرات يجب ان تكون كالتالي

Dim X as Integer
Dim Y as Single

X=Int(9.75)
' 9 هنا ستساوي 
'بعد ذلك تقوم بطرح الرقم الأصلي و هو 9.75 من الرقم الصحيح الذي حصلت عليه هكذا :
Y=9.75 - X
' و ستحصل اذا على الرقم العشري بكل بساطة

تم تعديل هذه المشاركة بواسطة crazy-man في 8 يونيو 2005 في 15:14

#5

عندك حق يا Crazy انا طلعت اغبى من الغباء لكن ربما لانى تعودت على الكتابة بطريقة صعبة:wacko: :wacko:

إن قلت قال الله قال رسولـه همزوك همز المنكر المتعالي
أو قلت قد قال الصحابة والألـى تبعاً لهم بالقول والأعمال
أو قلت قـال الشافعي وأحمد و أبو حنيفة والإمام الغالي
صدوا عن وحي الإله ودينـه واحتالوا على حرام الله بالإحلال
يا أمةً لعبت بدين نبيها كتلاعب الصبيان في الأوحال
حاشا رسول الله يحكم بالهوى تلك إذاً حكومة الضلال

feed.1.gif

#6

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

لا يا أخي جوست, ما أقبل تحكي عن نفسك بالشكل ده.

وفعلاً هذه الفكرة صحيحة ( فكرة الطرح) و هي الفكرة المتبعة برمجياً.

أخوكم ميثم كمال

#7

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

#8

مااجمل هذا المنتدى ومااروع اعضاؤه , فعلاً مكان ممتاز واعضاء قمة فى الاحترام وانا فعلاً اتشرف جداً بوجودى بينكم :rolleyes:

إن قلت قال الله قال رسولـه همزوك همز المنكر المتعالي
أو قلت قد قال الصحابة والألـى تبعاً لهم بالقول والأعمال
أو قلت قـال الشافعي وأحمد و أبو حنيفة والإمام الغالي
صدوا عن وحي الإله ودينـه واحتالوا على حرام الله بالإحلال
يا أمةً لعبت بدين نبيها كتلاعب الصبيان في الأوحال
حاشا رسول الله يحكم بالهوى تلك إذاً حكومة الضلال

feed.1.gif

#9

الأخوه الكرام ما أجمل ردودكم وما أجمل هذا المنتدى

طبعا الحل ممتاز وفكرة جيدة من الأخ / crazy man

عموما أحببت أن أوضح لماذا أردت هذه الطريقة بعد ما رأيت من تفاعل جيد في هذا المنتدى

أولا : الموضوع يخص برنامج مخزون وفي شاشة أدخال الأصناف الأمر تطلب مني أن أضع لكل صنف عدة وحدات بيع

مثال : اسم الصنف / صابون

الوحدة الأولى : قطعة

الوحدة الثانية : كرتون ( وعدد الكرتونة الواحدة 40 قطعة )

وعند البيع سوف نبيع بالقطعة وبالكرتون

فإذا افترضنا أننا أشترينا : 12 كرتونة و 30 قطعة

الإجمالي = 12 كرتونه * 40 قطعة = 480 قطعة + 30 قطعة = 510

فإذا أردنا أن نعرف كمية الموجود في المخزن / كم كرتونه ، وكم قطعة

سوف نقوم بالتالي : 510 / 40 = 12.75 كرتونه

في هذه الحالة استطيع أن أقول له أن العدد الموجود في المخزن = 12 كرتونه واستطيع أخفاء الكسر

ولكن كان السؤال كيف استطيع أخذ الكسر لكي أقوم بضربه في مجموع الكرتونه ويطلع الناتج كالتالي

0.75 * 40 = 30 قطعة

بذلك أستطعت أن أقول لصاحب المستودع أن مخزونك من الصابون :

كرتونه = 12

قطعة = 30

#10

بعد هذا الشرح أنتظر ردودكم وتعليقاتكم

كما أحب أخذ رأيكم في هذه الطريقة وهل هي صحيحة أم أن هناك طرق أفضل

وأخيرا أشكر لكم جهودكم أخواني الأعزاء

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

#11

مع احترامي لكل الاعضاء ولكن لدي بعض الملاحظات اتمنى ان تاخذوها برحابة صدر...

اولا / طريقة الاخ جوست صحيحة وفي كل الاعداد الصحيحة ولكن المشكلة انها تظهر الرقم على شكل عدد وليس كسر يعني 75 بدلا من

0.75

ثانيا / طريقة الاخ crazyman لا تزبط في الاعداد الصحيحة الاقل من الصفر وذلك بسبب :

9.75 اقرب عدد صحيح لها هو 9 .

-9.75 اقرب عدد صحيح لها -10.

مما يؤدي الى ناتج خاطئ.

بعد اذن الاخ crazyman سوف اضع الكود النهائي والصحيح ان شاء الله ( الكود نفس كود الاخ crazyman ولكن مع التعديل عليه )

الكود :

Dim x As Integer
Dim y, m As Single
If Val(Text1.Text) < "0" Then
If Val(Text1.Text) = Int(Val(Text1.Text)) Then
MsgBox "0"
Exit Sub
End If
x = Int(Val(Text1.Text))
y = x - Val(Text1.Text)
m = "1" + y
MsgBox m
Else
x = Int(Val(Text1.Text))
y = Val(Text1.Text) - x
MsgBox y
End If

اخبروني برايكم

تم تعديل هذه المشاركة بواسطة abu sabreen في 10 يونيو 2005 في 11:51

من دروسي :

درس مبسط لفهم ال VB6.... Resource File

تعلم تصميم اداة ال Active X خطوة بخطوة (الجزء الأول)

الطريقة المثلى للتعامل مع مسجل النظام( VB6..... (Registry

من برامجي :

Abo Sabreen Messenger v2.1 العملاق

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

مفكرة الإسلام؛ طالع أخبار العالم وأخبار المجاهدين بعيدا عن التعتيم الاعلامي.

#12
اقتباس
اولا / طريقة الاخ جوست صحيحة وفي كل الاعداد الصحيحة ولكن المشكلة انها تظهر الرقم على شكل عدد وليس كسر يعني 75 بدلا من

0.75

اولا اشكرك اخى ابو صابرين على الكود الجميل

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

X1 = Int(9.75)
X2 = Right("9.75", Len("9.75") - InStr(1, "9.75", ".", vbTextCompare))
X2 = "0." & X2

وبهذه الطريقة سيعود لك الكسر بالعلامة العشرية :rolleyes:

تم تعديل هذه المشاركة بواسطة GHOST2010 في 10 يونيو 2005 في 15:37

إن قلت قال الله قال رسولـه همزوك همز المنكر المتعالي
أو قلت قد قال الصحابة والألـى تبعاً لهم بالقول والأعمال
أو قلت قـال الشافعي وأحمد و أبو حنيفة والإمام الغالي
صدوا عن وحي الإله ودينـه واحتالوا على حرام الله بالإحلال
يا أمةً لعبت بدين نبيها كتلاعب الصبيان في الأوحال
حاشا رسول الله يحكم بالهوى تلك إذاً حكومة الضلال

feed.1.gif

#13

مزبوط اخ جوست

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

ولكن هناك ملاحظة جرب ضع رقم صحيح بدون كسر مثلا 9 سوف يعطي الناتج 0.9 وهذا خاطئ يجب ان يعطي صفر(لان 9.0 = 9)

لذا اقترح وضع الكود تبعك مع التعديل البسيط عليه ( طبعا هادا بعد اذنك)

If Val(Text1.Text) = Int(Val(Text1.Text)) Then
MsgBox "0"
Exit Sub
End If
X1 = Int(Val(Text1.Text))
X2 = Right(Val(Text1.Text), Len(Text1.Text) - InStr(1, Val(Text1.Text), ".", vbTextCompare))
X2 = "0." & X2
MsgBox X2

من دروسي :

درس مبسط لفهم ال VB6.... Resource File

تعلم تصميم اداة ال Active X خطوة بخطوة (الجزء الأول)

الطريقة المثلى للتعامل مع مسجل النظام( VB6..... (Registry

من برامجي :

Abo Sabreen Messenger v2.1 العملاق

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

مفكرة الإسلام؛ طالع أخبار العالم وأخبار المجاهدين بعيدا عن التعتيم الاعلامي.

#14

السلام عليكم

جميل هذا الحوار الذي يكون هدفه المعرفة و تبادل الخبرة

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

المتغيرات :

Dim X as Integer
Dim Y as Single

X=Fix(9.75)
' 9 هنا ستساوي 
' حتى لو كان الرقم سلبي لأنه سيحتقظ بالقيمة 9 دون عمل تغيير الرقم الى أقرب قيمة
'بعد ذلك تقوم بطرح الرقم الأصلي و هو 9.75 من الرقم الصحيح الذي حصلت عليه هكذا :
Y=9.75 - X
' و ستحصل اذا على الرقم العشري بكل بساطة

أتمنى أن يرضيك الآن الكود

و أنا في انتظار ردك

#15

والله كود احترافي وطلع احسن من كود العم جوست

سبحان الله الافكار تتوالى ويوجد هنالك اكثر من كود لنفس المشكلة

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

لذلك اضططرت الى فحص قيمة التيكست هل هي سالبة ام موجبة

بس على الفكرة الدالة fix رهيبة لانها ترجع القيمة المطلقة للعدد اولا ومن ثم تعمل عمل الدالة int وهي ارجاع عدد صحيح

شكرا لك

من دروسي :

درس مبسط لفهم ال VB6.... Resource File

تعلم تصميم اداة ال Active X خطوة بخطوة (الجزء الأول)

الطريقة المثلى للتعامل مع مسجل النظام( VB6..... (Registry

من برامجي :

Abo Sabreen Messenger v2.1 العملاق

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

مفكرة الإسلام؛ طالع أخبار العالم وأخبار المجاهدين بعيدا عن التعتيم الاعلامي.

#17

اشكرك اخى ابو صابرين واخى Crazy-Man :rolleyes:

إن قلت قال الله قال رسولـه همزوك همز المنكر المتعالي
أو قلت قد قال الصحابة والألـى تبعاً لهم بالقول والأعمال
أو قلت قـال الشافعي وأحمد و أبو حنيفة والإمام الغالي
صدوا عن وحي الإله ودينـه واحتالوا على حرام الله بالإحلال
يا أمةً لعبت بدين نبيها كتلاعب الصبيان في الأوحال
حاشا رسول الله يحكم بالهوى تلك إذاً حكومة الضلال

feed.1.gif

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

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