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

مساعه في داله if

بدأه نزار رضوان في 4 نوفمبر 2013 · 10 رد · 537 مشاهدة · في Microsoft Visual C#.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

 

 

عندي مشكله في كود

وهوا عباره عن

 

ثلاثه ليست بوكس

 

listbox1= 1.2.3

listbox2= 4.5.6

listbox=7.8.9

 

اريد ان استخدم داله if في تبدل القيم الموجوده  مكان معين مثل ليست بوكس رابع

بحيث تكون النتيجه كالتالي  ويقوم بتبديل كل القيم من الليست المتداخل

 

 

1.4.7

1.4.8

1.4.9

1.5.7

1.5.8

1.5.9

1.6.7

1.6.8

1.6.9

 

2.4.7

2.4.8

2.4.9

2.5.7

2.5.8

2.5.9

2.6.7

2.6.8

2.6.9

 

 

3.4.7

3.4.8

3.4.9

3.5.7

3.5.8

3.5.9

3.6.7

3.6.8

3.6.9

 

 

 

انا جريت هاي الطريقه

 

 

 

if ((no1index < textBox1.Lines.Length))

{

no1 = textBox1.Lines[no1index];

no1index++;

 

if ((no2index < textBox2.Lines.Length))

{

no2index++;

 

if ((no3index < textBox3.Lines.Length))

{

 

no3index++;

}

 

else { no2index = 0; no1index++; }

 

}

 

else { no3index = 0; no2index++; }

 

}

 

 

 

لكن لم تعطيني نتيجه الرجاء المساعده وشكرا

تم تعديل هذه المشاركة بواسطة نزار رضوان في 5 نوفمبر 2013 في 01:16

#2

ممكن وضع الكود الكامل أو المشروع لأني بصراحة لم أفهم ما تريد أن تعمل أرجو التوضيح أكثر 

من الواضح أنك تريد عمل زيادة في الـ noindex لكن ما هو نوع المتغير هل هو int , Long,float?

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

 

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

        private string increace( string s)        {            int inds = 0;            int tens = 0;            int hunds = 0;            string[] arr = s.Split('.');            for (int i = 0; i < arr.Length; i++)            {                if (i==0)                {                    int.TryParse(arr, out inds);                }                if(i==1)                {                    int.TryParse(arr, out tens);                }                if(i==2)                {                    int.TryParse(arr, out hunds);                }            }            if (inds == 9)            {                if (tens == 9)                {                    hunds++;                    inds = 0;                    tens = 0;                }                else                {                    tens++;                    inds = 0;                }            }            else            {                inds++;            }            return (String.Format("{0}.{1}.{2}", inds, tens, hunds));        }

فقط إقرأ السطر من الليست كسلسلة نصية  واستخدم التابع في الزيادة

أما لمقارنة الأرقام :

private string CompareAndReturnBigger(string num1, string num2)
        {
            int inds1, inds2 = 0;
            int tens1, tens2 = 0;
            int hunds1, hunds2 = 0;

            //read and split numbers From the strings
            string[] arr1 = num1.Split('.');
            int.TryParse(arr1[0], out inds1);
            int.TryParse(arr1[1], out tens1);
            int.TryParse(arr1[2], out hunds1);

            string[] arr2 = num2.Split('.');
            int.TryParse(arr2[0], out inds2);
            int.TryParse(arr2[1], out tens2);
            int.TryParse(arr2[2], out hunds2);
            
            //Compare hundreds first
            if(hunds1>hunds2)
            {
                return num1;
            }
            else if(hunds2>hunds1)
            {
                return num2;
            }
            else // hundereds are equal, so lets compare the tens
            {
                if(tens1>tens2)
                {
                    return num1;
                }else if(tens2>tens1)
                {
                    return num2;
                }
                else //tens are equal so lets compare the indivisuals
                {
                    if(inds1>inds2)
                    {
                        return num1;
                    }
                    else if(inds2>inds1)
                    {
                        return num2;
                    }
                    else
                    {
                        return "Tow number Are the Same!";
                    }
                }
            }
        }

تم تعديل هذه المشاركة بواسطة eiado في 5 نوفمبر 2013 في 06:53

||***************************************************||


 ||بسم الله الذي لا يعلو على اسمه شيء في الارض ولا في السماء وهو العلي العظيم ||


||***************************************************||


 ||                             اللهم إن لم يكن بك غضب علي فلا ابالي                       ||


||***************************************************||


في المنتديات العلمية استخدام التقييم rep_up.png  rep_down.png  يرفع من قيمة الموضوع واهمية الرد

#3

اشكرك اخي ايادو على هذا المجهود لكن للاسف ليس هذا ما قصدت

 

سوف اقوم بالتوضيح مره اخرى .

 

 

افترض ان عندي 3 ليست بوكس ... تحتوي كل ليست على مجموعه قيم عدديه نفترض انها على النحو التاالي

listbox1= 1.2.3
listbox2= 4.5.6
listbox=7.8.9
اريد عمل كليك . يقوم يعميله توزيع ابداليه لكل قيم الليست الثلاثه  ويتم تخزين القيم في ليست رابع نفترض انه

listbox4

 بحيث اتكون انلتيجه على النحو التالي

1.4.7
1.4.8
1.4.9
1.5.7
1.5.8
1.5.9
1.6.7
1.6.8
1.6.9
 
2.4.7
2.4.8
2.4.9
2.5.7
2.5.8
2.5.9
2.6.7
2.6.8
2.6.9
 
3.4.7
3.4.8
3.4.9
3.5.7
3.5.8
3.5.9
3.6.7
3.6.8
3.6.9

 

 وهنا نلاحظ انه  يتم الدخول الى القيمه الاولى في الليست الاول .. ويوزعها على ااول قيمه في الليست الثاني .. ولا يخرج منها الا عندما توزعه على كل قيم الليست الثالث .. وهكذا الى ان يتم توزيع القيم على كل محتوى الليست الاول والثالني والثالث .

 

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

تم تعديل هذه المشاركة بواسطة نزار رضوان في 5 نوفمبر 2013 في 12:14

#4

وعليكم السلام أخي.

الحل بإستخدام ثلاث حلقات for ضمن بعضها، حيث الحلقة الأولى تمر على عناصر ListBox الأولى, والحلقة الثانية لـ ListBox الثانية, والحلقة الثالثة تمر على عناصر ListBox الثالثة.

وإليك المثال التالي:

            for (int i = 0; i < listBox1.Items.Count; i++)            {                for (int j = 0; j < listBox2.Items.Count; j++)                {                    for (int k = 0; k < listBox3.Items.Count; k++)                    {                        string item = string.Format("{0}.{1}.{2}", listBox1.Items.ToString(), listBox2.Items[j].ToString(), listBox3.Items[k].ToString());                        listBox4.Items.Add(item);                    }                }            }

 أسأل الله أن ينفعك هذا. لك تحياتي.

• • •


[ ربيّ احفظ سوريا الحبيبة]


oFOK7Kd.png

#5

مشكووووووور جدا اخي العزيز وتعبتك معي يعطيك الف عافيه

لكن انا اريد الحل عن طريق استخدام داله  if

هل تستطيع المساعده فيها ؟

تم تعديل هذه المشاركة بواسطة نزار رضوان في 5 نوفمبر 2013 في 14:07

#6

في نص سؤالك لا أجد أي حاجة لإستخدام [if]، لو تعرض علينا نص البرنامج الأصلي الذي تقوم بعمله. فهناك العديد من الخوارزميات المعدة والمدروسة مسبقاً لهكذا برامج وتسمى خوارزميات التباديل أو [Permutation]، وهي تقوم على مبدأ تخزين البيانات المطلوبة ضمن مصفوفة أو أكثر وعمل التباديل فيما بينها على أساس [index of array]،

 

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

• • •


[ ربيّ احفظ سوريا الحبيبة]


oFOK7Kd.png

#7

انا اريد الكود والقاعده في استخدام هذه الحركه لتقوم بالتباديل على 3 ليست بوكس بساتخدام قاعده if

#8

اتفق مع اخي Eng.Tareq Jehad لا يوجد الحاجة الي [if] ممكن توضح ما الغرض من الفكرة

#9

عزيزي ماحدا فاهم عليك المطلوب حمل المشكلة كاملة هنا حتى نستطع مساعدتك

الفكرة انك ترسل جزء من المشكلة بشكل غير مفهوم .. وهل هذا واجب دراسي ؟

||***************************************************||


 ||بسم الله الذي لا يعلو على اسمه شيء في الارض ولا في السماء وهو العلي العظيم ||


||***************************************************||


 ||                             اللهم إن لم يكن بك غضب علي فلا ابالي                       ||


||***************************************************||


في المنتديات العلمية استخدام التقييم rep_up.png  rep_down.png  يرفع من قيمة الموضوع واهمية الرد

#10

شكركم جمعا على الردود

 

 :  لا يوجد الحاجه لداله اف لكن المطلوب هوا استخدام هذه الداله KARIMSOFT

 

المهندس اياد :اشكرك على هذا الرد اللطيف لا استطيع تحميل البرنامج ككل ؟ لان هذه الفكره .. عباره عن جزئيه يبنى عليها البرنامج في العمليات الاحقه

احتاج نفس ما قام به اخي Eng.Tareq Jehad ولكن ليست بداله فور .. انما بداله ال if

السبب هوا انا العمليات المستخدمه اللحقه في البرنامج عند استخدام داله الفور .. تحدث مشكله في تطبيقها .. ولا يتم تطبيق المعالجه بالشكل الصحيح .. مع استخدام داله if

سوف تكون عمليه ناجحه .. وانا اطلب منكم فقط القاعده للكود الذي قام بكتابته اخي   Eng.Tareq Jehad 

وتحويلها من قاعده for الي قاعده if فقط

#11

أها فهمت عليك :

يمكنك استخدام العودية في الحل Recursive call شوفالطريقة أخي :

private void MoveItems(i,j,k,orginalJ,orginalk){                       string item = string.Format("{0}.{1}.{2}", listBox1.Items.ToString(), listBox2.Items[j].ToString(), listBox3.Items[k].ToString());if(k>0){moveItems(i,j,k-1,orginalJ,orginalk); }else{if(j>0){moveItems(i,j-1,orginalk,orginalJ,orginalk);}else{if(i>0){moveItems(i-1,orginalJ,orginalk,orginalJ,orginalk);}}}}            }

الطريقة أخي كما يلي :

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

لاحظ مثلاً الحل السابق , سيقوم البرنامج باستدعاء نفسة وكتابة

                       string item = string.Format("{0}.{1}.{2}", listBox1.Items.ToString(), listBox2.Items[j].ToString(), listBox3.Items[k].ToString());

لكن انظر أنه في المرحلة الأولى سيتم استدعاء k كل مرة منقوصا 1 وطبعا المقصود بـK وانت تعرف أنها listBox3.Items.Count وأن j  المقصود بها listBox2.Items.Count و i المقصود بها listBox1.Items.Count

سيقسم البرنامج حسب if إلى 3 مراحل :

في المرحلة الأولى سيتم تنفيذ الكود moveitems وسيتم إعادة تنفيذ الكود لكن k منقوصة 1 حتى انتهاء kبالقيمة 0 وعندها سيتم تنفيذ المرحلة الثانية أي سيتم انقاص j مع تنفيذ التابع moveItems منقوصا من قيمة j  وهكذا دواليك

تم تعديل هذه المشاركة بواسطة eiado في 7 نوفمبر 2013 في 05:26

||***************************************************||


 ||بسم الله الذي لا يعلو على اسمه شيء في الارض ولا في السماء وهو العلي العظيم ||


||***************************************************||


 ||                             اللهم إن لم يكن بك غضب علي فلا ابالي                       ||


||***************************************************||


في المنتديات العلمية استخدام التقييم rep_up.png  rep_down.png  يرفع من قيمة الموضوع واهمية الرد

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