المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : مقارنة بين ListBox1 وListBox2


ثامر أبو بلقيس
17-10-2013, 08:59 AM
السلام عليكم
بإفتراض أنه لدينا ListBox1 و ListBox2

مكتوب في ListBox1 االأعداد : 1 , 2 , 453 , 678 , 9
وفي ListBox2 الأعداد : 4, 2 , 453 , 178 , 90

نريد أن تتم المقارنة لاستخراج أكبر عدد مشترك بين عناصر المجموعتين
أي 453

ما الكود الذي سيساعدني في إجراء هذه المقارنة

سلام :abc_152:

عبود عبود
17-10-2013, 10:56 AM
سوف يتم تأجيل ردى قليلا لأعطى مساحة من التجاوب والتفاعل مع الموضوع وإظهار مدى فهم الحلقات التكرارية

ثامر أبو بلقيس
17-10-2013, 02:18 PM
شكرا الأخ عبود على المرور الطيب
وفي محاولة منا لتجسيد الطلب ماذا لو أردنا حساب القاسم المشترك
الأكبر لعددين بافتراض أنه ليست لدينا أكواد مباشرة و مطالبين بإعداد برمجة تتعلق بالأمر
فكرت باستغلال العناصر المتاحة و ليكن ListBox
سنختار ListBox1 ليستقبل قواسم العدد الأول الذي سنكتبه في
الأنبوت 1 بديهيا أنه اذا تحقق باقي القسمة يساوي صفر فإن العدد
إحدى قواسم ما كتب في الانبوت 1
وبناء عليه هذا الكود قد يفي بالغرض
x= Input.GetText("Input1");
for i =1,x do
fract = Math.Mod(x,i);
y=x/i
if fract ==0 then
ListBox.AddItem("ListBox1", y, "");
end
end

بنفس الطريقة ندرج أنبوت 2 و ListBox2 حتى نستخلص قواسم العدد الثاني
اذا هنا صار لدينا ListBox1 و ListBox2 فيهما أعداد مشتركة على الأقل رقم 1 كما طرح في السؤال اين هو القاسم المشترك الأكبر
طبعا هو أكبر عدد مشترك في ListBox1 و ListBox2 هو القاسم المشترك الأكبر
كيف ياترى سنحدد هذا العدد ؟

أرجو أني وضحت وإن شاء الله أفدت و لو بالقليل

عبود عبود
17-10-2013, 07:35 PM
عذرا لم أركز جيدا فهل هذا معناة أنك لم تعد تريد إجابة على السؤال الذى بالأعلى أم هذا مجرد توضيح لما تريدة ؟
وفى جميع الأحوال إذا كنت لا تزال تنتظر إجابة سوف تكون الإجابة لها أكثر من جزء وهم :
1-فى حالة تساوى عدد إندكسات الليست بوكس الأول و الثانى
2-فى حالة أن تكون المقارنة من الليست بوكس الأكثر عددا إلى القل عددا
3-فى حالة أن تكون المقارنة من الليست بوكس الأقل عددا إلى الأكثر عددا

وقد أحضرت القسم الأول للإجابة وهو عند تساوى الإندكسات فى الليست بوكس الأول و الثانى " إنتظرنى قليلا إن كنت لا تزال تريد إجابة " وضع ردا بالإنتظار أو الإلغاء فى حالة توصلك للمطلوب.

:abc_012: "بعمل ويندوز لواحد صاحبى وقدامى نصف ساعة أو ساعة فقط إن شاء الله"

ثامر أبو بلقيس
17-10-2013, 08:02 PM
بلغ سلامي لصديقك بعد ما تنهي عملك
كل ما تراه يثري هذه النقطة فلابأس من إدراجه لتعم الفائدة :abc_152:

موفق

النصل القاطع
17-10-2013, 08:20 PM
حسنا أخى
إليك إجابتى فى خمسة خطوات لتسهيل الفهم

1- قم بالإعلان عن مصفوفة بإسم table1 و كذلك إعلن عن مصفوفة بإسم table2 كالآتى
table1={}
table2={}

2- فى الحلقة التى تملأ بها اللستبوكس 1
و بعد سطر إدراج العنصر فى اللستبوكس
ضع سطرا يضع نفس العنصر فى table1

3- فى الحلقة التى تملأ بها اللستبوكس 2
و بعد سطر إدراج العنصر فى اللستبوكس
ضع سطرا يضع نفس العنصر فى table2

4- إستخدم هذه الحلقة لأخذ العناصر المشتركة بين المصفوفتين إلى مصفوفة ثالثة و لتكن table3
table3={}
for a,z in pairs (table1) do
for x,y in pairs (table2) do
if z == y then
Table.Insert(table3, x, y);
end
end
end
5- إستخدم دالة اللوا
max_num=table.maxn(table3)

لتصل فورا لمرادك و الذى سيكون فى المتغير max_num
مع ملاحظة أن max_num إسم إختيارى و لك الحرية فى تغييره

ثامر أبو بلقيس
17-10-2013, 08:35 PM
سأحاول قدر المستطاع تجسيد بل فهم ما أشرت إليه
لاحظ أستاذ خالد وقد أخبرتك سابقا أني أريد تعلم الحلقات التكرارية
لذلك قد أطالب بدرس مميز حتى لايكون لي عذرا في التطبيق

النصل القاطع
17-10-2013, 08:39 PM
سأحاول قدر المستطاع تجسيد بل فهم ما أشرت إليه
لاحظ أستاذ خالد وقد أخبرتك سابقا أني أريد تعلم الحلقات التكرارية
لذلك قد أطالب بدرس مميز حتى لايكون لي عذرا في التطبيق

حسنا أخى
أعد قراءة مشاركتى السابقة

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

عبود عبود
17-10-2013, 09:11 PM
حسنا أخى
أعد قراءة مشاركتى السابقة

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


لا أعتقد ذلك أستاذ خالد :abc_113:

فعلى حد علمى أن :

table.maxn تســــاوى Table.Count أليس كذلك ؟


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

إليك الجزء الأول من الحل وهو عند تساوى أعداد المصفوفتين " كعدد عناصر "

:abc_012: الكود هكذا لتعم الفائدة وفى المرفقات الملف المفتوح :

--
con1 = ListBox.GetCount("ListBox1");
con2 = ListBox.GetCount("ListBox2");
a=0;
if con1==con2 then
for i=1, con1 do
txt1 = tonumber(ListBox.GetItemText("ListBox1", i));
for i=1,con1 do
txt2 = tonumber(ListBox.GetItemText("ListBox2", i));
if i<con1 and txt1==txt2 then
a=txt1;
elseif i>=con1 and txt1==txt2 then
b=txt1;
if b>a then
a=b;
end
end
end
end
end
if a>0 then
Input.SetText("Input1", a);
else
Input.SetText("Input1", "لا يوجد أعداد مشتركة");
end

:abc_012: وطبعا تم تنسيق الكود كتابيا لمعرفة بداية و نهاية الحلقات مع الشروط يعنى شغل على مية بيضة هههه

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

نقطة جانبية مصفوفات يمكن أن تكون ليست بوكس أو غيرة .

النصل القاطع
17-10-2013, 09:18 PM
لا أعتقد ذلك أستاذ خالد :abc_113:

فعلى حد علمى أن :
table.maxn تســــاوى Table.Count أليس كذلك ؟


لا ليس كذلك :abc_088:

و لم أشأ الرد منذ البداية
حسنا إليك ردى

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

لا يهمنا نقارن من مع من
أكبر مع أصغر أم أصغر مع أكبر
لا يهم

الدالة maxn تعنى max number و تعطى الرقم الأكبر بالمصفوفة
و لو كان هناك معادلا لها بالأوتوبلاى لما طرحت أنا دالة اللوا

تحياتى

عبود عبود
17-10-2013, 09:24 PM
لا ليس كذلك :abc_088:

بينى و بينك التجربة الفعلية :abc_065:

ثامر أبو بلقيس
17-10-2013, 09:29 PM
عمل يستحق الوقوف عنده بارك الله فيكما
الأخ عبود نظرا لأن الجهاز عندي مصاب ولم استطع التجربة حاليا
قي الكود السابق هل يمكن للتعبير or أن يضم الاحتمالات المتبقية

خادم المسلمين
17-10-2013, 09:33 PM
شـكــ وبارك الله فيك ـــرا لك ... لك مني أجمل تحية .

عبود عبود
17-10-2013, 09:36 PM
لا ليس كذلك :abc_088:

و لم أشأ الرد منذ البداية
حسنا إليك ردى

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

لا يهمنا نقارن من مع من
أكب مع أصغر أم أصغر مع أكبر
لا يهم

الدالة maxn تعنى max number و تعطى الرقم الأكبر بالمصفوفة
و لو كان هناك معادلا لها بالأوتوبلاى لما طرحت أنا دالة اللوا

تحياتى

إذن أقنعنى بملف مفتوح جائز أنى تسرعت فى الحكم


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


الأخ عبود نظرا لأن الجهاز عندي مصاب ولم استطع التجربة حاليا
قي الكود السابق هل يمكن للتعبير or أن يضم الاحتمالات المتبقية

لا فالتعديل سيكون بوضع شرط آخر عندما يكون احد المصفوفات أكبر من الآخر وسيكون شرط ثم يلية التكرار تبعا للعملية من كبير إلى صغير او العكس ويكون تابع للشرط الأول فى الكود بــ elseif con1< con2 أو العكس

ثامر أبو بلقيس
17-10-2013, 09:45 PM
إخواني لمعرفة أكبر عدد في المصفوفة قرأت مرة هذا
في global function :
function largest(t)
local maxcount = t[1]
local maxindex = 1
for index, value in pairs(t) do
if value > maxcount then
maxcount = value
maxindex = index
end
end
return maxcount, maxindex
end

و لاستغلاله ضع تحت زر لتتم القراءة في أنبوت 1 مثلا
numbers = {12, -360, -3}

Input.SetText("Input1", largest(numbers));

النصل القاطع
17-10-2013, 09:47 PM
بينى و بينك التجربة الفعلية :abc_065:

حسنا أخى
لم أكن قد إختبرت الدالة فعليا

إليك دالة إحضار القيمة العظمى و الصغرى من أى مصفوفة
t={1,2,3,4,5,9}

max = -math.huge
min = math.huge

for k,v in pairs( t ) do
if type(v) == 'number' then
max = math.max( max, v )
min = math.min( min, v )
end
end

الكبرى max
الصغرى min

عبود عبود
17-10-2013, 09:49 PM
بالنسبة للأخ خالد

ماهو نتيجة هذا الكود عند المعاينة ؟ :

--
b={5,10,500};
g=table.maxn(b);
Input.SetText("Input1", g);

هل سيكون 3 ؟ فكم عدد العناصر فى المصفوفة ؟ وماذا إذا ذادت عدد العناصر أو قلت ؟

النصل القاطع
17-10-2013, 09:55 PM
حسنا
الكود كاملا (مع وضع table2 و table1)

table1={1,2,3,4,5,6,7,8,9}
table2={3,4,7}
table3={}
for a,z in pairs (table1) do
for x,y in pairs (table2) do
if z == y then
Table.Insert(table3, x, y);
end
end
end
-- get max or min
max = -math.huge
min = math.huge

for k,v in pairs( table3 ) do
if type(v) == 'number' then
max = math.max( max, v )
min = math.min( min, v )
end
end

Dialog.Message("Notice", max, MB_OK, MB_ICONINFORMATION, MB_DEFBUTTON1);


الناتج هنا = 7
و أعتقد أن هذا هو حل التساؤل المطروح

عبود عبود
17-10-2013, 09:59 PM
حسنا أخى
لم أكن قد إختبرت الدالة فعليا

إليك دالة إحضار القيمة العظمى و الصغرى من أى مصفوفة
t={1,2,3,4,5,9}

max = -math.huge
min = math.huge

for k,v in pairs( t ) do
if type(v) == 'number' then
max = math.max( max, v )
min = math.min( min, v )
end
end

الكبرى max
الصغرى min


آسف أخى فأنا أسبب التعب لمن يتناقش معى حتى أفهم ما يقولة

فبداية ماهى وظيفة السطرين تحت إسم المصفوفة إذن ؟ حيث أنى أراك إستخدمت نفس المتغيرين فى التكرار التالى لهم أليسوا سيصبحون بدون فائدة بعد عملية التكرار وقبل العملية أيضا ؟

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

النصل القاطع
17-10-2013, 10:01 PM
آسف أخى فأنا أسبب التعب لمن يتناقش معى حتى أفهم ما يقولة

فبداية ماهى وظيفة السطرين تحت إسم المصفوفة إذن ؟ حيث أنى أراك إستخدمت نفس المتغيرين فى التكرار التالى لهم أليسوا سيصبحون بدون فائدة بعد عملية التكرار وقبل العملية أيضا ؟

بينى و بينك التجربة الفعلية :abc_005:

ثامر أبو بلقيس
17-10-2013, 10:04 PM
شكرا جزيلا بارك الله فيكما

عبود عبود
17-10-2013, 10:06 PM
لالالالا الخطأ عندك فلم تدرج الكود كاملا كدفعة واحدة ههههههه

تسلم إيدك يا معلم فى الكود النهائى :abc_051:

:abc_138:

النصل القاطع
17-10-2013, 10:16 PM
لالالالا الخطأ عندك فلم تدرج الكود كاملا كدفعة واحدة ههههههه

تسلم إيدك يا معلم فى الكود النهائى :abc_051:

:abc_138:

:abc_051:
لا مشاكل أخى عبود

منذ فترة طويلة سألنى أحد الأصدقاء عن الفرق بين مصفوفتين
و كان هدفه وقتها إحضار العناصر الغير متساوية بين المصفوفتين
أظنك تعرفه :abc_051:

و عندها أجبته أنه لابد أن نقارن الصغرى مع الكبرى و نحذف المتشابه لنصل لمصفوفة الفروق

أخى العزيز
كل مشكلة و لها ظروفها

هنا السؤال يقودنا حول معرفة العناصر المتطابقة

هنا لا يهمنا طول المصفوفتين من الأساس و لا يهمنا على وجه الإطلاق سنقارن من مع من

و عند الوصول لتيبل العناصر المتطابقة يكفى إحضار أكبر عناصرها
أما عن
math.huge
فالكتاب يقول عنها
The value HUGE_VAL, a value larger than or equal to any other numerical value

:abc_152::abc_152::abc_152:

عبود عبود
17-10-2013, 10:24 PM
:abc_051:
لا مشاكل أخى عبود

منذ فترة طويلة سألنى أحد الأصدقاء عن الفرق بين مصفوفتين
و كان هدفه وقتها إحضار العناصر الغير متساوية بين المصفوفتين
أظنك تعرفه :abc_051:

و عندها أجبته أنه لابد أن نقارن الصغرى مع الكبرى و نحذف المتشابه لنصل لمصفوفة الفروق

أخى العزيز
كل مشكلة و لها ظروفها

هنا السؤال يقودنا حول معرفة العناصر المتطابقة

هنا لا يهم على وجه الإطلاق سنقارن من مع من
و عند الوصول لتيبل العناصر المتطابقة يكفى إحضار أكبر عناصرها
أما عن
math.huge
فالكتاب يقول عنها
The value HUGE_VAL, a value larger than or equal to any other numerical value

:abc_152::abc_152::abc_152:

طبعا طبعا أعرفة وكويس إنك فاكرة لحد دلوقتى :abc_065:

بجد حل ممتاز ولو أننا لا نستطيع معرفتة إلا بالسؤال أولا مش عارف أقولك إية مش مشكلة بقى لنا رب إسمة الكريم :abc_152:

ربنا يوفقنا فى أن نجد من يزيد على معلوماتنا الضعيفة :abc_086:

امل الماضي
19-10-2013, 09:18 AM
شـكــ وبارك الله فيك ـــرا لك ... لك مني أجمل تحية .

فرح صالحي
06-03-2014, 02:38 PM
السلام عليكم ورحمة الله وبركاته
شـكــ وبارك الله فيك ـــرا لك ... لك مني أجمل تحية .
:abc_152:

ربيع
18-12-2014, 07:46 PM
حسنا
الكود كاملا (مع وضع table2 و table1)

table1={1,2,3,4,5,6,7,8,9}
table2={3,4,7}
table3={}
for a,z in pairs (table1) do
for x,y in pairs (table2) do
if z == y then
Table.Insert(table3, x, y);
end
end
end
-- get max or min
max = -math.huge
min = math.huge

for k,v in pairs( table3 ) do
if type(v) == 'number' then
max = math.max( max, v )
min = math.min( min, v )
end
end

Dialog.Message("Notice", max, MB_OK, MB_ICONINFORMATION, MB_DEFBUTTON1);


الناتج هنا = 7
و أعتقد أن هذا هو حل التساؤل المطروح

جيد :abc_152:
كان بالإمكان اختصار كثير من الاسطر البرمجية
table1={1,2,3,4,5,6,7,8,9}
table2={3,4,7}
table3={}
for a,z in pairs (table1) do
for x,y in pairs (table2) do
if z == y then
Table.Insert(table3, 1, y);
end
end
end
Dialog.Message("Notice",math.max( unpack(table3)));


بالتوظيف الفعلي لدالة الليوا بالطريقة الصحيحة

المـهاجر
19-12-2014, 09:53 PM
دائما الإختصار جيد

سعيدون
18-01-2015, 04:02 AM
رائع يا شباب شكرا

سمير نبيل
18-01-2015, 07:13 AM
موفق بإذن الله ... لك مني أجمل تحية .

ياسرهتهت
20-04-2016, 06:16 AM
بسم الله الرحمن الرحيم
بارك الله فيكم جميعا موضوع رائع جداااااا
موفقين جميعا
:abc_152::abc_152: