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

مشاهدة النسخة كاملة : الاستخلاص العلائقي من المصفوفات


ثامر أبو بلقيس
03-02-2015, 04:15 PM
السلام عليكم ورحمة الله وبركاته

لديك مصفوفات و لتكن ثلاث
المصفوفة الاولى : {'1505','18','2004'}
المصفوفة الثانية : {'877','453','501'}
المصفوفة الثالثة : {'320','7','100'}

الاستخراج المطلوب :
اظهار العناصر ذات العلاقة التالية :
ما ينتهي به العنصر الاول يبدأ به الثاني وبحكم اخترنا ارقام

حيث سيظهر 2004 يليه 453 يليه 320 لأن هذه التشكيلة تحقق المطلوب
بعدها ستظهر الأعداد
18 تليها 877 ثم 7 متتالية
--------
ثم 1505 فـ 501 و أخيرا 100

هذا هو المطلوب و ليس شرطا على الارقام

نلتقي بود :abc_138:

ثامر أبو بلقيس
03-02-2015, 05:37 PM
--------------------------------------------------------------------
اذ لم تحاول ... ما فائدة ما تتعلمه من شروحات و دروس ؟
اذ لم تكن مهتما ... مافائدة تواجدك في مثل هكذا صفحات ؟
اذ كان يزعجك طلب ذو طابع تمرين أو بحث .. لن تخطو نحو الامام ؟
اذ كنت تعرف و تستطيع بأن تساعد و لم تشارك .. فقد كتمت ؟
اذ كان ما تقرأه غير مفيد إليك الخط و أنفع غيرك بما يفيد ؟
اذ كنت تحب الكلام فقط أكتب في ردك اذ و ضف لها تعليقا مثبطا ؟
اذ كنت ترى بأن الطلب صعبا ... فأنت لم تفهم ما تقرأه من شروحات وردودك كلها مجاملات
------------------------------------------------------------------

فرح صالحي
03-02-2015, 08:19 PM
السلام عليكم ورحمة الله وبركاته
اذا كنت انا المقصود فقد صدقت
موفق بإذن الله ..:abc_026:. لك مني أجمل تحية .

ثامر أبو بلقيس
03-02-2015, 08:34 PM
طبعا كل من أكِن له محبة مقصود :abc_138:
بتحريك همته و انت واحد منهم و ليست صعبة عليك المحاولة :abc_138:

فرح صالحي
03-02-2015, 09:57 PM
السلام عليكم ورحمة الله وبركاته
هذه محاولة حتى لا تغضب وأعرف انها غير صحيحة
s={}
s={'1505','18','2004'},{'877','453','501'},{'320', '7','100'}
Dialog.Message("Number 1", b["c"], MB_OK, MB_ICONINFORMATION, MB_DEFBUTTON1);
Dialog.Message("Number 2", b["e"], MB_OK, MB_ICONINFORMATION, MB_DEFBUTTON1);
Dialog.Message("Number 3", b["g"], MB_OK, MB_ICONINFORMATION, MB_DEFBUTTON1);
Dialog.Message("Number 4", b["d"], MB_OK, MB_ICONINFORMATION, MB_DEFBUTTON1);
Dialog.Message("Number 5", b["h"], MB_OK, MB_ICONINFORMATION, MB_DEFBUTTON1);
Dialog.Message("Number 6", b["a"], MB_OK, MB_ICONINFORMATION, MB_DEFBUTTON1);
Dialog.Message("Number 7", b["f"], MB_OK, MB_ICONINFORMATION, MB_DEFBUTTON1);
Dialog.Message("Number 8", b["i"], MB_OK, MB_ICONINFORMATION, MB_DEFBUTTON1);
ياستار استر
:abc_085:

ثامر أبو بلقيس
03-02-2015, 10:13 PM
أحسنت أخي سنأخذ أول خطوة من الحل
من معادلتك و هي هذا السطر
s={{'1505','18','2004'},{'877','453','501'},{'320' ,'7','100'}}

وسنبدأ بحل المطلوب انطلاقا منه إن شاء الله

هذه التعبير هو عبارة عن مصفوفة مركبة من ثلاث مجموعات
1 - كيف نعلن عن عناصر كل مجموعة جزئية من المجموعات على حدى
2 - كيف نستخلص من عناصر المجموعة الجزئية الأولى آخر رقم لكل عنصر
3 - كيف نستخلص من عناصر المجموعة الجزئية الثانية أول رقم لكل عنصر
4 - كيف نستخلص من عناصر المجموعة الجزئية الثانية كذلك آخر رقم لكل عنصر
5 - كيف نستخلص من المجموعة الجزئية الأخيرة أول رقم لكل عنصر
6 - كيف نضع شرط اذا تساوى الاستخلاص رقم 2 مع الاستخلاص 3 و في نفس الوقت يتساوى
الاستخلاص رقم4 مع الاستخلاص رقم5
عند تحقق الشرط 6 ستحقق المطلوب
هكذا تفكر في طريقة للحل وتضع خطة أو خوارزمية عمل :abc_138:

فرح صالحي
03-02-2015, 10:40 PM
[QUOTE=ثامر أبو بلقيس;277081]أحسنت أخي سنأخذ أول خطوة من الحل
من معادلتك و هي هذا السطر
s={{'1505','18','2004'},{'877','453','501'},{'320' ,'7','100'}}

وسنبدأ بحل المطلوب انطلاقا منه إن شاء الله

هذه التعبير هو عبارة عن مصفوفة مركبة من ثلاث مجموعات
1 - كيف نعلن عن عناصر كل مجموعة جزئية من المجموعات على حدى

s={c ={'1505','18','2004'},d={'877','453','501'},e={'32 0','7','100'}}

ثامر أبو بلقيس
03-02-2015, 10:55 PM
بارك الله فيك :abc_138: سعدت كثيرا لاهتمامك

لونجرب هذا الكود قلت نجرب لنفهم فقط
s ={{'1505','18','2004'},{'877','453','501'},{'720', '1','100'}}
for i , n1 in pairs(s[1]) do
Dialog.Message("Notice", n1);
end

لاحظ في البداية قمنا بالاعلان عن كامل المصفوفة
ثم وضعنا دالة تكرارية ذات تعبيرين i و n1
i هو رقم العنصر أو ترتيبه
n1 هو العنصر نفسه هذين التعبيرين مصدرهما المصفوفة الام s
لكن s فيها ثلاث مجموعات جزئية لذلك اخترنا 1 بين المعكوفين
لأننا سنتعامل مع المجموعة الجزئية الاولى
و يظهر في الرسالة الحوارية n1 المعبرة على العنصر الاول
------- جرب ستظهر لك عناصر المجموعة الاولى متتالية ---
لو اردت التعبير عن المجموعة الجزئية الثانية نغير بين المعكوفين 1 بـ 2
اذا اردنا المجموعة الجزئية الثالثة نغير نا بين المعكوفين بـ 3
اذن التعبير
for i , n1 in pairs(s[1]) do سيكون مخصص للمجموعة الجزئية الاولى
for i , n2 in pairs(s[2]) do سيعبر عن المجموعة الجزئية الثانية
for i , n3 in pairs(s[3]) do سيعبر عن المجموعة الجزئية الثالثة

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

ثامر أبو بلقيس
03-02-2015, 11:00 PM
اذ لم تفهم أي شيء فيما كتبته لحد الان اسأل ما بدى لك
وسأجيبك إن شاء الله :abc_138:

فرح صالحي
04-02-2015, 07:04 AM
السلام عليكم ورحمة الله وبركاته
لم استطع جمعهم في كود واحد ليظهرالارقام في نافذة واحدة ومرتبين
s ={{'1505','18','2004'},{'877','453','501'},{'720', '1','100'}}
for i , n1 in pairs(s[1]) do
Dialog.Message("Notice", n1);
end
------
for i , n2 in pairs(s[2]) do
Dialog.Message("Notice", n2);
end
------
for i , n3 in pairs(s[3]) do
Dialog.Message("Notice", n3);
end
موفق بإذن الله ...:abc_026: لك مني أجمل تحية .

ثامر أبو بلقيس
04-02-2015, 01:28 PM
السلام عليكم ورحمة الله وبركاته
لاظهار كل عناصر المجموعات في نافذة
من بين الحلول مايلي :
s ={{'1505','18','2004'},{'877','453','501'},{'720', '1','100'}}
tou=""
for t =1,#s do
for i , n in pairs(s[t]) do
tou = tou .. n .."\r\n"
end
end
Dialog.Message("Notice", tou);

لكن لاحظ لا نريد هذا الان بل سنحتفظ فقط بهذه المراحل
لمواصلة البحث عن حل للطلب :
s ={{'1505','18','2004'},{'877','453','501'},{'720', '1','100'}} for i , n1 in pairs(s[1]) do for i , n2 in pairs(s[2]) do for i , n3 in pairs(s[3]) do
الدالة غير مغلقة لانه مازالت مراحل

ياسرهتهت
05-02-2015, 11:48 AM
السلام عليكم ورحمة الله وبركاته

لديك مصفوفات و لتكن ثلاث
المصفوفة الاولى : {'1505','18','2004'}
المصفوفة الثانية : {'877','453','501'}
المصفوفة الثالثة : {'320','7','100'}

الاستخراج المطلوب :
اظهار العناصر ذات العلاقة التالية :
ما ينتهي به العنصر الاول يبدأ به الثاني وبحكم اخترنا ارقام

حيث سيظهر 2004 يليه 453 يليه 320 لأن هذه التشكيلة تحقق المطلوب
بعدها ستظهر الأعداد
18 تليها 877 ثم 7 متتالية
--------
ثم 1505 فـ 501 و أخيرا 100

هذا هو المطلوب و ليس شرطا على الارقام

نلتقي بود :abc_138:

==================================================
بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاته
استاذي العزيز ابو بلقيس
بالتاكيد هذا السؤال صعب؟
ولم يتناول احد شرح مثل هذه الجزئية من قبل ؟
للاجابة نحتاج لتحديد الرقم الاخير لكل عنصر من عناصر المصفوفة الاولي
الرقم الاول والاخير من عناصر المصفوفة الثانية
والرقم الاول من المصفوفة الثالثة
بعد ذالك تبدء عملية الترتيب ........

لم افهم لماذا جمعتم المصفوفات الثلاثة في مصفوفة واحدة ؟
اليس من الاسهل التعامل مع كل مصفوفة كما جائة في السؤال ؟
--------
ارجو منك استاذ ابو بلقيس توضيح كيفية تحديد الحرف الاول او الرقم الاول لعناصر المجموعة

شـكــ وبارك الله فيك ـــرا لك ... لك مني أجمل تحية .
:abc_152::abc_152::abc_152:

ثامر أبو بلقيس
05-02-2015, 11:57 AM
مرور عطر أخي ياسر
بأمانة العملية ككل ليست صعبة نهائيا :abc_138:
جمعنا المصفوفات في مصفوفة انطلاقا من محاولة الأخ فرح
نعم بالامكان التعامل مع كل مصفوفة على حدى لكن من الافضل نحقق
المطلوب وفق الفرضيات هذه ثم نحل بطرق أخرى :abc_138:
في المساء ان شاء الله سنتعاون في كتابة خطوة او اثنين
وهما :
2 - كيف نستخلص من عناصر المجموعة الجزئية الأولى آخر رقم لكل عنصر
3 - كيف نستخلص من عناصر المجموعة الجزئية الثانية أول رقم لكل عنصر
4 - كيف نستخلص من عناصر المجموعة الجزئية الثانية كذلك آخر رقم لكل عنصر
5 - كيف نستخلص من المجموعة الجزئية الأخيرة أول رقم لكل عنصر
هذه هي النقاط التي أدعوك للمشاركة فيها

ثامر أبو بلقيس
05-02-2015, 12:12 PM
الان السؤال موجه لك أخي ياسر
تحضيرا لوضع أكواد
لديك :
v ="yaser"
-----------------------------------------------
حاول كتابة دالة لتستخلص الحرف الاخير r
ثم دالة أخرى لتستخلص الحرف الأول y
ملاحظة : استغل أكواد البرنامج فقط لديك كود يحقق ذلك
---------------------------------------------
فيمابعد :
تلك الدالة التي سنستعملها في طلبنا أربع مرات

ياسرهتهت
05-02-2015, 03:57 PM
بسم الله الرحمن الرحيم
بصدق لم اعرف طريقة تقسيم احرف اسمي

ولكن يم اظهار العنصر الاول من المجموعات الثلاثة بالكود
s ={{'1505','18','2004'},{'877','453','501'},{'720', '1','100'}}
Debug.ShowWindow(true);
for i=1,Table.Count(s)do
Debug.Print(s[i][1].."\r\n");
end

والعنصر الثاني من المجموعات الثلاثة

s ={{'1505','18','2004'},{'877','453','501'},{'720', '1','100'}}
Debug.ShowWindow(true);
for i=1,Table.Count(s)do
Debug.Print(s[i][2].."\r\n");
end

والعنصر الثالث من المجموعات الثلاثة
s ={{'1505','18','2004'},{'877','453','501'},{'720', '1','100'}}
Debug.ShowWindow(true);
for i=1,Table.Count(s)do
Debug.Print(s[i][3].."\r\n");
end

------------
:abc_085: لوكان اسمي مكتوب بهذا الشكل:abc_085:
v ={yaser}

v ={{y},{a},{s},{e},{r}}

:abc_102::abc_102::abc_102::abc_102:

لتمكنت من تحديد الحرف الاول او الاخير

ثامر أبو بلقيس
05-02-2015, 04:04 PM
بخصوص الاكواد الثلاث الاولى
ماذا فعلت لقد قمت باستخراج العناصر الأولى من كل محموعة بالشكل الصحيح
الكود الثاني للعناصر الثانية لكل مجموعة
الكود الثالث لاستخرج العناصر المرتبة ثالثا لكل مجموعة
--------
هذا الاستخراج أي نعم صحيح لكن أين العلاقة المشروطة التي تم على ضوئها هذا الاستخراج أو غيره
اذن هو استخراج كيفي غير مشروط .... أليس كذلك ؟


يتبع

ثامر أبو بلقيس
05-02-2015, 04:08 PM
بخصوص التحكم في أي نص أو أثر كتابي
و استخلاص منه موقع معين
لاحظ الدالة String.Mid مادورها ؟ هي عندك ضمن الدوال جربها
هذه الدالة أي String.Mid تساوي تماما دالة lua :
string.sub يقومان بنفس العمل لكننا سنهتم بالدالة الموجودة في البرنامج
String.Mid جربها على
v ="yaser"
ستجدها تحقق لك الاستخراج الذي تريده
فهي تتعامل بمن ..إلى ..

ياسرهتهت
05-02-2015, 10:46 PM
بسم الله الرحمن الرحيم
بالفعل استاذي العزيز الدالة تستخلص الاحرف
--------------


v ="yaser"
result = String.Mid(v, 1, 1);
للحرف الاول

---================================================== ========--

v ="yaser"
result2 = String.Mid(v, 2, 1);
للحرف الثاني

---================================================== ========--
v ="yaser"
result3 = String.Mid(v, 3, 1);
للحرف الثالث

---================================================== ========--
v ="yaser"
result4 = String.Mid(v, 4, 1);

للحرف الرابع

---================================================== ========--


v ="yaser"
result5 = String.Mid(v, 5, 1);
للحرف الاخير




:abc_102:ولكن كيف ستتعامل الدالة مع العاصر في المصفوفة ؟
:abc_102: وكيف نبني العلاقة؟:abc_070:
اعطينا توضيح بسيط يسهل العملية

:abc_114:

ثامر أبو بلقيس
05-02-2015, 11:03 PM
السلام عليكم ورحمة الله وبركاته
بارك الله فيك أخي ياسر
سنحتاج للوصول للحرف الاول
الى التعبير
result = String.Mid(v, 1, 1);

كما ذكرت

لكن التعبير :
result5 = String.Mid(v, 5, 1);

صحيح في مثالنا يعبر عن العنصر الاخير على أساس أن الاسم مكون من 5 حروف
لكن في عناصر المصفوفة سيتغير هذا العدد و بالتالي سنعوضه بالتعبير
result5 = String.Mid(v, #v, #v); حتى نتفادى أي حساب لمجموع
حروف العنصر " أي عددهم "

يتبع

ثامر أبو بلقيس
05-02-2015, 11:10 PM
السلام عليكم ورحمة الله وبركاته

حوصلة ما توصلنا اليه :
s ={{'1505','18','2004'},{'877','453','501'},{'720', '1','100'}}
for i , n1 in pairs(s[1]) do
for i , n2 in pairs(s[2]) do
for i , n3 in pairs(s[3]) do
yaser1 = String.Mid(x,x,x); ------ تخزين آخر رقم في عناصر المصفوفة الاولى
yaser2 = String.Mid(x, x,x); ---- الاعلان على بداية كل عنصر من المصفوفة الثانية
yaser3 = String.Mid(x,x,x); ------ تخزين آخر رقم في عناصر المصفوفة الثانية
yaser4 = String.Mid(x, x,x); ---- بداية كل عنصر من المصفوفة الاخير

الدالة غير مغلقة لانه مازالت المرحلة الاخيرة
لكن ماذا سنضع في مكان كل x بناء على ما سبق من اكواد
في المشاركة السابقة و ما أفادت به التعليقات ؟ لنحاول :abc_138:

ثامر أبو بلقيس
05-02-2015, 11:13 PM
ولاحظ n1 معبر عن كل عناصر المجموعة الجزئية الاولى
n2 معبر عن كل عناصر المجموعة الجزئية الثانية
n3 معبر عن كل عناصر المجموعة الجزئية الثالثة :abc_138:

نظرا لوجود دالة تكرارية

ياسرهتهت
06-02-2015, 04:17 AM
بسم الله الرحمن الرحيم
s ={{'1505','18','2004'},{'877','453','501'},{'720', '1','100'}}
for i , n1 in pairs(s[1]) do
for i , n2 in pairs(s[2]) do
for i , n3 in pairs(s[3]) do
yaser1 = String.Mid(n1,-1,#n1);
yaser2 = String.Mid(n2, 1,#n2);
yaser3 = String.Mid(n2,-1,#n2);
yaser4 = String.Mid(n3, 1,#n3);
end
end
end

:abc_070: لم تنجح العملية

ثامر أبو بلقيس
06-02-2015, 03:45 PM
السلام عليكم ورحمة الله وبركاته
أخي ياسر
01 - yaser1 خصصناها لاستخراج آخر حرف أو رقم من عناصر المجموعة الجزئية
الاولى
أنت كتبت :
yaser1 = String.Mid(n1,-1,#n1);

والصواب :
yaser1 = String.Mid(n1,#n1,#n1);
02 - yaser2 خصصناها لاستخراج الحرف او الرقم الاول من عناصر المجموعة الجزئية الثانية
أنت كتبت :
yaser2 = String.Mid(n2, 1,#n2);
وهذا خطأ غير متوقع
و الصواب :
yaser2 = String.Mid(n2, 1,1);
03 - yaser3 خصصناها لاستخراج آخر رقم أو حرف من عناصر المجموعة الجزئية الثانية كذلك
أنت كتبت :
yaser3 = String.Mid(n2,-1,#n2);

والصواب :
yaser3 = String.Mid(n2,#n2,#n2);
04 - yaser4 خصصناها لاستخراج الرقم او الحرف الاول من المجموعة الجزئية الثالثة
أنت كتبت :
yaser4 = String.Mid(n3, 1,#n3);
وهذا كذلك خطأ غير متوقع
و الصواب :
yaser4 = String.Mid(n3, 1,1);

و بالتالي : حوصلة الأكواد المتحصل عليها ككل هي :
s ={{'1505','18','2004'},{'877','453','501'},{'720', '1','100'}}
for i , n1 in pairs(s[1]) do
for i , n2 in pairs(s[2]) do
for i , n3 in pairs(s[3]) do
yaser1 = String.Mid(n1,#n1,#n1);
yaser2 = String.Mid(n2, 1,1);
yaser3 = String.Mid(n2,#n2,#n2);
yaser4 = String.Mid(n3, 1,1);

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

يتبع :abc_138:

ثامر أبو بلقيس
06-02-2015, 03:56 PM
2 - كيف نستخلص من عناصر المجموعة الجزئية الأولى آخر رقم لكل عنصر
3 - كيف نستخلص من عناصر المجموعة الجزئية الثانية أول رقم لكل عنصر
4 - كيف نستخلص من عناصر المجموعة الجزئية الثانية كذلك آخر رقم لكل عنصر
5 - كيف نستخلص من المجموعة الجزئية الأخيرة أول رقم لكل عنصر
6 - كيف نضع شرط اذا تساوى الاستخلاص رقم 2 مع الاستخلاص 3 و في نفس الوقت يتساوى
الاستخلاص رقم4 مع الاستخلاص رقم5
عند تحقق الشرط 6 ستحقق المطلوب

اذن وصلنا للمرحلة الاخيرة رقم 6
المطلوب كتابة دالة شرطية تحت أكواد آخر حوصلة تقوم بمايلي :
اذا تساوى الاستخلاص رقم 2 مع الاستخلاص 3 و في نفس الوقت يتساوى الاستخلاص رقم4 مع الاستخلاص رقم5

بمعنى اذا تحقق تساوي yaser1 مع yaser2 و
yaser3 تساوي yaser4
ينتج في رسالة n1 و n2 و n3 أي العناصر التي حققت الشروط تغلق الدالة الشرطية هذه
ثم تغلق كل الاكواد بـ end ثلاث مرات
ويصبح العمل جاهز للمعاينة :abc_138:

ثامر أبو بلقيس
06-02-2015, 09:24 PM
علينا اكمال العمل أخي ياسر
قد ننتقل لموضوع آخر يبدو أني حددت بعض معالمه وفوائده :abc_138:

ياسرهتهت
07-02-2015, 12:50 PM
بسم الله الرحمن الرحيم
ننتقل استاذي الكريم
موفق بإذن الله ... لك مني أجمل تحية .
:abc_152::abc_152::abc_152:

ثامر أبو بلقيس
07-02-2015, 01:29 PM
جيد أخي ياسر حتى و إني كنت أنتظر
منك كتابة الكود النهائي
المهم : للحصول على كود يفي بغرض الطلب كنا قد وصلنا
للمراحل ماقبل الاخيرة و هانحن نضيف شرط الاستخراج ذو علاقة ما
وهنا حددت وفق ماطرح في أول الموضوع
كود :
s={{'2004','18','1505'},{'877','453','501'},{'320' ,'7','100'}}
for i , n1 in pairs(s[1]) do
for i , n2 in pairs(s[2]) do
for i , n3 in pairs(s[3]) do
yaser1 = String.Mid(n1,#n1,#n1);
yaser2 = String.Mid(n2, 1,1);
yaser3 = String.Mid(n2,#n2,#n2);
yaser4 = String.Mid(n3, 1,1);
if yaser1==yaser2 and yaser3==yaser4 then
Dialog.Message("Notice", n1.." ---- "..n2.." ---- "..n3);
end
end
end
end

ثامر أبو بلقيس
07-02-2015, 01:32 PM
وسبق ووعدنا بوضع نفس الحل على أن لا تكون
المصفوفات مضمنة في مصفوفة واحدة
كود :
c1 ={'2004','18','1505'}
c2= {'877','453','501'}
c3={'320','1','100'}
-------------------------------------
for i , n1 in pairs(c1) do
for i , n2 in pairs(c2) do
for i , n3 in pairs(c3) do
yaser1 = String.Mid(n1,#n1,#n1);
yaser3 = String.Mid(n2,#n2,#n2);
yaser2 = String.Mid(n2, 1,1);
yaser4 = String.Mid(n3, 1,1);
if yaser1==yaser2 and yaser3==yaser4 then
Dialog.Message("Notice", n1.." ---- "..n2.." ---- "..n3);
end
end
end
end

ثامر أبو بلقيس
07-02-2015, 01:36 PM
إليك أخي المحترف قد ترى أن الطلب و الحل بسيطا نوعا ما :abc_088: وقلت القضية سهلة :abc_025: الان ما هو الحل اذ كانت المجموعات غير محددة أي ليست ثلاثة فمن غير المعقول أن تكتب مئات الاكواد و المقارنات :abc_113: أكتب حلا احترافيا يقوم بنفس الدور مهما كان عدد المجموعات الجزئية:abc_138: عند وجود الحل سنقرأه و نستفيد منه:abc_086:

ربيع
08-11-2015, 07:50 PM
موفق بإذن الله ... لك مني أجمل تحية .

ثامر أبو بلقيس
13-05-2016, 11:02 PM
يرفع للاطلاع