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

[ تمت الإجابة ]binary search

بدأه احمد النبوي في 26 أكتوبر 2013 · 8 رد · 744 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

ممكن اعرف الخطأهنا

#include <iostream>

using namespace std;

int binarysearch(int array[],int size,int value){

int first=0;

int last=size-1;

int middle;

int position=-1;

bool found= false;

while(!found&&first<=last){

if (array[middle]==value){

position=middle;

found=true;

}

else if(array[middle]>value){

last=middle-1;}

else {first=middle+1;}

}

return position;

}

const int size=5;

int main()

{int arr={10,9,5,4,3};

int c=binarysearch(arr,size,3);

cout<<"the number of value="<<c;

return 0;

}

تم تعديل هذه المشاركة بواسطة احمد النبوي في 26 أكتوبر 2013 في 20:50

#2

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

لا أدري أي خطأً تقصد بالتحديد .. ولكن من المؤكد أن هناك الأخطاء التالية :

1- قيمة middle غير مهيّئة !!!!

2- لم تقم بتحديث قيمة middle في كل حلقة .. يجب أن تساوي (البداية + النهاية) مقسومة على 2 ..

حاول تصحيح الأخطاء السابقة وتابع المناقشة إن ظهرت لك أمور أخرى :)

 

بالتوفيق

تم تعديل هذه المشاركة بواسطة مصطفى 36a2 في 27 أكتوبر 2013 في 19:54

#4

قيمة middle غير مهيّئة...

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

Blog

GitHub

#5

ممكن بعد اذنك تشوف الكود ده ما الخطأ به

#include <iostream>

using namespace std;

void binarysearch(int a[],int size,int search){

int found=false;

int low=0;

int high=size-1;

int mid=((high+low)/2);

while(low<=high)

{

if(search==a[mid]){

found=true;

break;}

else if(search>a[mid])

low=mid+1;

else high=mid-1;

}

if(found==true){

cout<<"founded";}

else{ cout<<"not fonded";}

}

int main()

{int a[]={1,2,3,4,5,6,7,8};

int b;

cout<<"enter number to search in array"<<endl;

cin>>b;

(a,8,b);

return 0;

}

#6

عليك إضافة العبارة :

mid=((high+low)/2);

قبل نهاية حلقة while ليتم تحديد middle جديد بعد تعديل قيم high و low .

 

بالتوفيق

#7

نفس المشكله اخي الفاضل اعطيه الرقم لايحدد اذا كان موجود ام لا وشكر لك

#8

لأنك لم تقم باستدعاء الدالة في الكود :)

يعني باقي عليك تضيف السطر الذي أخبرتك به ..

ثم تستدعي الدالة في الكود .. فقد قمت بكتابة

(a,8,b);

فأين اسم الدالة ؟ :)

بعد هذا التعديل سيعمل البرنامج بإذن الله ..

بالتوفيق

#9

الف شكر

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