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

سؤال في البحث الثنائي

بدأه 3D3D في 18 ديسمبر 2011 · 1 رد · 489 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ,,,

أخباركم إن شاء الله بصحه وعافيه ,,,

عندي مشروع ومن ضمن هالمشروع داله Binnary search

كتبت هالفنكشن ,,,

int BinarySerchA(int a[],int i,int j,int x)
	{

		if(i<j)
		{
			int m=(i+j)/2;
			if(m==x)
			{

				return a[m];}
			else
			{
				if(m>x)
				{
					return BinarySerchA(a,i,m-1,x);}
				else
					return BinarySerchA(a,m+1,j,x);
			}
		}

	}

طبعاً انا أبيه يرجع لي قيمة الايندكس ويخزنها بمتغير أنا أعرفه بداله المين ,..

وقيمه i=0 وقيمه j=5 بحيث تطلع المصفوفة حجمها 6

وراح أدخل قيمه الــX بــ 1

طبعا تبداء تدخل بالـ If بتنفذ أول شرط لي اللي هو أن i<j

وراح تحسب لي قيمه m

بيطلع لي الناتج 2.5

بعدها توقف الفنكشن ...؟؟

ولا يشتغل

شلون ممكن أتفادها ,,؟؟؟

وجٌزيتم عني خير الجزاء ,,

تم تعديل هذه المشاركة بواسطة 3D3D في 18 ديسمبر 2011 في 19:58

#2

السلام عليكم ..

  1. يجب التصحيح إلى :
    if(a[m]==x)
                        	{
    
                                	return m;
                        	}

  2. الكود :
    #include <cstdlib>
    #include <iostream>
    
    using namespace std;
    int BinarySerchA(int a[],int i,int j,int x)
        	{
    
                	if(i<j)
                	{
                        	int m=(i+j)/2;
                        	if(a[m]==x)
                        	{
    
                                	return m;
                        	}
                        	else
                        	{
                                	if(m>x)
                                	{
                                        	return BinarySerchA(a,i,m-1,x);}
                                	else
                                        	return BinarySerchA(a,m+1,j,x);
                        	}
                	}
    
        	}
    
    
    int main()
    {
    	int a[] = {44 , 55, 66, 77, 88};
    int index = BinarySerchA(a  , 0 ,4 , 77);
    cout << index << endl;
    //just to see results
    cin >> index;
    return 0;
    }

  3. جرب الكود :
    index = 5 / 2;
    cout << index << endl;

    سيعطي القيمة 2 لأن قسمة عددين العملية هذه هي قسمة صحيحة لعددين صحيحين .

تم تعديل هذه المشاركة بواسطة houssam11350_11350 في 18 ديسمبر 2011 في 22:49

1

لا إله إلا الله ... محمد رسول الله

لو كانت مشاركتي مفيدة و تريد تشجيعي على المزيد من العطاء , فضلا قم بتقييم المشاركة

المعرًف القديم : houssam11350_11350

من مواضيعي : ArabGenCode : مولد كود و إجراءات مخزنة و واجهات لجداول سيكوال سيرفر

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…