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

كود خطأ

مغلق
بدأه cold0zero في 12 ديسمبر 2003 · 5 رد · 557 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

ممكن أعرف و ين الخطأ بالكود

#include<iostream.h>
void main () 
{
	const n=5;
	int a[n]={1,2,3,4,5};
  for (int i=0;i<=4;i++)
 	 cout<<a<<" ";
  do
  {
 	 int location,left=0,right=n-1;
 	 int found=0,target;
 	 cin>>target;
 	 while(!found&&left<=right)
 	 {
 	 location=(left+right)/2;
 	 found=(a[location]==target);
 	 if (a[location]<target) left=location+1;
 	 else right=location-1;
 	 }
  
  if (found)cout<<location<<endl;
  if (!found)cout<<"not found"<<endl;	}

}
#2

سأبحثلك بالموضع ٍٍو{{] لأني مستعمجل

عندنا امتحانات

مدونتي

http://mbnoimi.net

#3

أين while التي تنتهي بها do الموجودة؟؟؟؟؟؟؟؟؟؟؟؟؟

#4

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

أهلين cold0zero نورت المنتدى ,, :)

بالنسبة للكود في مشكلتين :

الاولى كما ذكر أخي CompuMrn مافي while مع ال do الاولى ,,أضفتها لك ,,

والثانية ,, أنك قمت بتعريف بعض المتغيرات داخل مجال ال do بذلك لن تكون مرئية خارجها ,, عدلتها لك أيضا بحيث عرفتها في الخارج ,,

لم أفكر في ماذا يفعل البرنامج لأعدله لك لكي يعمل 100% فقط عدلت لك ال Errors

عليك باستبدال ال true التي وضعتها في ال while التي أضفتها بأمر اخر منطقي حسب الكود ,,

اذا كانت هناك مشاكل ,, فأنا في الخدمة ,,

#include<iostream.h>

void main () 
{
const n=5;
int a[n]={1,2,3,4,5};
 for (int i=0;i<=4;i++)
  cout<<a<<" ";

int found=0,target;
 int location,left=0,right=n-1;

 do
 {

  
  cin>>target;

  while(!found&&left<=right)
  {
  location=(left+right)/2;
  found=(a[location]==target);
  if (a[location]<target) left=location+1;
  else right=location-1;
  }

 }while(true); // While What ? // write something else of true !!

 if (found)cout<<location<<endl;
 if (!found)cout<<"not found"<<endl; 

}

بالتوفيق ,,

banner_60_468.gif

NOTHING IS IMPOSSIBLE

#5

البرنامج كما أظن يقوم بالبحث الثنائي binary search

فما حاجتك إلى do فـ while الداخلية تكفي للقيام بهذا العمل

بمعنى آخر ماذا تريد بـ do ؟؟؟؟؟؟؟؟؟

أنصحك باستخدم كود الأخ HGB مع إلغاء الـ do while .

#6

مشكورين أخواني على الرد السريع

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

المثال نفس اللي أنا كاتبوا بس أضيف عليه في النهاية حلقة while

ليرجع يدخل بالحلقة من جديد

ليصبح الكود

#include<iostream.h>
void main () 
{
	const n=5;
	int a[n]={1,2,3,4,5};
  for (int i=0;i<=4;i++)
 	 cout<<a<<" ";
  do
  {
 	 int location,left=0,right=n-1;
 	 int found=0,target;
 	 cin>>target;
 	 while(!found&&left<=right)
 	 {
 	 location=(left+right)/2;
 	 found=(a[location]==target);
 	 if (a[location]<target) left=location+1;
 	 else right=location-1;
 	 }
  
  if (found)cout<<location<<endl;
  if (!found)cout<<"not found"<<endl;	}

}

while(target!=0);
}

تم تعديل هذه المشاركة بواسطة cold0zero في 14 ديسمبر 2003 في 13:36

هذا الموضوع مغلق.

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