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

كيف اعرف 3 ارقام مجموعهم ( ؟ ) من 60 رقم؟؟

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

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

اخواني

اريد معرفت كيف اعرف مجموع 3 ارقام او اكثر من بين ستون رقم يكون مجموعهم ( ؟ ) يعنى و بالتفصيل اكثر انني عندي ستون رقم مثلا ( 750 ، 740 ، 210، 740 ، ...... إلخ ) اريد معرفة خمس ارقام يكون مجموعهم مثلا ( 1500 ) من بين هذه الارقام ، فالمعطيات عندي هو عدد الارقام المكونة لمبلغ معين من ستون رقم . و يمكن ان يكون هناك مجموعتين او اكثر يمثلون هذا المجموع ؟

هذا وجزاكم الله خير

#2

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

الراس الكبير ... لأن راسك كبير ماعرفتش تجيب الحل ... ههههههه

الحل في نظري ... انك تقسم الأعداد على مجموعات ، عدد هذه المجموعات هو 3 في المثال اللي ذكرته ... أي أن عدد المجموعات نفسه عدد الأعداد اللي تبغى تجمعها ,

بعد كذا تحط كل مجموعه في مصفوفة أحادية ... بحيث يتكون عندك ثلاث مصفوفات في كل مصفوفة مجموعة من الأعداد ,,,

ثم تنشئ مصفوفة مكونة من ثلاث أعمدة . وعدد غير محدد من الصفوف ... لاستخدامها في تعبئة الأعداد التي مجموعها هو نفس المجموع اللي تبغاه والذي هو 60 في مثالك .

ثم تعمل حلقة تكرار loop في داخل حلقة تكرار في داخل حلقة تكرار ...

يعني ثلاث حلقات تكرار ... بنفس عدد المصفوفات اللي عندك ...

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

ثم تشيك على المصفوفة ذات الثلاث أعمده ... وتاخذ كل صف ... والارقام اللي فيه ... وبكذا تكون انتهيت ..

اتمنى اني وفقت في الشرح ...

وأي سؤال ... راسلني على إيميلي لأني ماأدخل هنا كثير

alshebela@yahoo.com

#3

السلام عليكم

كلامك سليم جدا و هذا هو ال انا عملته لقد عرفت ثلاث متغيرات لتعبأة الارقام فيها و عملت 3 لوب في بعض و في اللوب الاخير وضعت شرط ان تساول رقم معين ولكن هذه الطريقة تم عمل ( 205320) عملية تبديل و توافيق ( وهذا الرقم لان عدد الارقام 60 رقم فيكون معادلة التبادلي (60ق3 ) وهي تساوي 60× 59× 58 = 205320)و عندما عملت هذه الطريقة في 4 ارقام كانت العملية بطيئة حيث انه يعمل ( 11703240) عملية تبديل و عندما عملتها في 5 ارقام توقف البرنامج عن العمل. فهل هناك حل آخر؟

#4

السلام عليكم

أهلا وسهلا ...

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

ياليت تكتب لي هنا الكود اللي انت كتبته....

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

الله يوفقك ... ويشرح صدرك ...

تم تعديل هذه المشاركة بواسطة البرمجة على أصول في 10 نوفمبر 2006 في 15:40

#5

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

معلش ..... احنا بنتعبك معانا و لكن هذا الكود الانا كتبته

Do While Not I1 = 60

X1 = Text1(I1).Text

I1 = I1 + 1

Do While Not I2 = 60

X2 = Text1(I2).Text

I2 = I2 + 1

Do While Not I3 = 60

X3 = Text1(I3).Text

I3 = I3 + 1

If X1 + X2 + X3 = Text2.Text Then

MsgBox X1 & " - " & X2 & " - " & X3

Exit Sub

End If

Loop

I3 = 0

Loop

I2 = 0

Loop

#6

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

Dim D As Integer
	For A = 1 To 60
	For B = 1 To 60
	For C = 1 To 60
		D = Val(A) * Val(B) * Val(C)
		If D = 60 Then List1.AddItem A & " * " & B & " * " & C
	Next C
	Next B
	Next A

الكود فيه خطأ ، لكن حاول تستفيد من الفكرة

يا نفسُ إن لم تصلحي

فتشبهي بالصالحينا

[ أبو العتاهية ]

#7

Dim D As Integer المفروض الــ Dim D As Long

ليس كل ما يتمناه المرء يدركه

arabteam2000.gif

#8

شكرا أخوي العقدة

فاتتني هذي

يا نفسُ إن لم تصلحي

فتشبهي بالصالحينا

[ أبو العتاهية ]

#9

لربما منتدى الخوازرميات يفيدك أكثر ..

عموماً بارك الله في الإخوة هنا لم يقصّروا

ولو عدم وجود اللغة بجهازي لكنت ساعدتك >< لكن ايش تقول .. العين بصيرة واليد قصيرة :(

#10

لحظه .... لحظه .....

حبيبي هي وحده من ثنتين ...

إما إني فهمتك غلط ... أو انك تستخدم طريقة غلط ...

الحين انت تسوي لوووب من واحد الين ستين في الحلقة الأولى ,,, والثانية كذلك ... والثالثة كذلك ...

طيب لو صار 20 * 20 *20 ... هل النتيجة تهمك ... أم أنك تريد أرقام غير متكررة ... ؟؟؟؟يعني لازم يكون الرقم الأول غير الرقم الثاني وأيضا غير الرقم الثالث ...

لأنه بتفرق كثير في التكرارات بعدين ياخي ترا الجهاز ماينلام يهنق وانت معطيه خس حلقات تكرار وكل وحده من واحد الى 60... هذا زين ماطلع لك بيل قيتس مع الشاشة وقال ترا هذي آخر مره ...هههههههههههه

لازم تحدد سؤالك عشان أقدر أجاوبك

جرب الحل اللي قلت لك ...

بعدين ترا حلقة تكرار ال for أسرع ولو بشيء بسيط من while هذي معلومة حطها في راسك ... بما إنك تعرف عدد مرات التكرار ياخي استخدم فور ...

انصحك اتبع الخطوات التاليه ...

1- عرف ثلاث مصفوفات عبارة عن عمود واحد وعشرين صف ..

2- عبي الأرقام اللي عندك في المصفوفات

3- اكتب فور داخل فور داخل فور ... واقرا العدد اللي في المصفوفة الأولى ويكون الاندكس حقه نفس عداد حلقة التكرار الأولى والثاني العدد اللي ي المصفوفة الثانية ويكون الاندكس حقه نفس عداد الحلقة الثانية والثالث كذلك من الحلقة الثالثة ...

طبعا بعيدا عن طريقة التعريف لأني صار لي سنتين ما اشتغلت على منتجات ويندوز ... لكن هذا السودو كود

 
dim array1 as array{20}
dim array2 as array{20}
dim array3 as array{20}

dim result as array {3,1000}


for i =1 to 20 do 

array1(i) := i

loop


for f = 1 to 20 do 

array2(f) :=f+20

loop


for z = 1 to 20 do 

array3(z) :=z +40

loop


	x := 0 
for i = 1 to 20 do 
	 for f = 1 to 20 do 
		 for z = 1 to 20 do 
			if array1(i)*array2(f)*array3(z) = 60 then 
			   x := x +1 
			   result(x,1) := array1(i)
			   result(x,2) := array2(f)
			   result(x,3) := array3(z)
			end if
		 loop 
	 loop 
loop

وبهذا بعد ما يطلع من التكرار تكون المصفوفة عندك معبأة بكل الأرقام اللي حاصل ضربها يساوي 60 وبدون تكرار

يارب يكون هذا اللي تبغاه

تم تعديل هذه المشاركة بواسطة البرمجة على أصول في 14 نوفمبر 2006 في 01:10

#11

بسم الله الرحمن الرحيم

أخي الكريم حسب ما فهمته من سؤالك أن لديك 60 رقم مثلاً زتريد ان تعرف أي ثلاث أرقام يكون مجموعها 1500 مثلاً

أولاً : في أي مكان هذه الأرقام مخزنة ؟؟؟

بغض النظر عن إجابتك أو مكان تخزين هذه الأرقام أنا أقترح تخزينها في جدول في قاعدة بيانات ثم نتبع الآتي :

1- جملة SQL للبحث عن الأرقام التي تقل عن الرقم المراد أن تكو ن الأرقام ثلاثة تساوي مجموعه وهنا 1500

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

2- نعيد على النتائج التي ظهرت لدينا ممكن أن يكون لدنا 60 رقم في حالة لم يجد اي رقم أكبر من 1500 أو يساويه وإما يكون أقل من 60 رقم

نقوم بجمع الرقم الأول والثاني ثم البحث بجملة Sql جديدة للبحث عن أي رقم بشرط أن يكون مجموع هذا الرقم مع الرقمين السابقين = 1500

وهكذا ..................

طريقة ثانية ممن أن تكون مقنعة ومكن أن تعطي نتائج غير صحيحة .....

1- المتوسط الحسابي لثلاثة أرثام مجموعها 1500 هو 500

2- نختار الأرقام التي تزيد أو تقل عن المتوسط الحسابي بمقدار أنت تحدده بحسب الدقة التي تريد

3- بذلك يتم التقليل من عدد الأرقام التي نريد العمل عليها ثم نقوم بالطرق السابقة لمعرفة الأعداد التي نريده

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

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