البحث المتتالي:
طريقة البحث المتتالي هـي إحدى الطرق المعــتمدة فـي البحـث سـوف نقـوم مـن
خلال هذا القسم معـرفة ما تتضمنـه هذه الطريقـة.
أفضل طريقـة لكي تتناول هذا الموضوع هـو وضعـه عبر كـود
مثال كـودي:
أكتب برنامج يطلب البرنامج فيه من المستخـدم إدخال درجـة أحد الطـلاب ثـم يقـوم
البرنامج بالبحث داخل مضفوفة مخـزنـة مسبقاً في البرنامج عـن رقـم هـذا الطالـب
الذي أحـرز النتيجـة المدخلة ويقوم بإدخال رقم الطالب في المصفوفـة؟
ومصفوفة درجات الطلاب هـي كالتالي:
int mark[10] = { 100,90,69,45,87,52,99,98,99,88} ;
حل المثال:
حــل هــذا الســؤال بســيط لنحــدد أولاً المــدخلات؛ أول مــدخل بــالطبع هـــي
مصفوفـة الـدرجات (ليسـت مـدخل بالتحديـد ولكـن يكفـي أنهـا مهيئـة داخـل
البرنامج) ؛ ثم يطلب البرنامج مـن المستخــدم إدخـال الدرجــة المـراد البحـث
عـنها وهذا المدخل الثاني ؛ بعـد ذلـك يقـوم البرنـامج بمقارنــة جميـع درجـات
الطلاب مع الرقم المدخل فإذا وجده يقوم بطبـاعـة رقم الطالب وإذا لـم يجـده
يخبر المستخدم أنـه لا وجود لهذه الدرجـة. كما تلاحـظ فسنضـطر لإستخــدام
دالة تكرارية للبحث والأمر الثاني دالة للقرارات لتقرير إذا كـان الـرقم المـدخل
موجوداً أو لأ.
أيضاً سنحتــاج متغيـر يسـتطيع تقريـر إذا مـا كـان البرنـامج وجـد القيمـة أو لأ؛
وسنسميـه found بحيث أنـه إذا أرجع قيمـة تسـاوي الصفر فإن النتيجـة غيـر
موجودة وإذا أرجع قيمـة تساوي الواحد فإن النتيجـة موجودة
والكود سيكون كما يلي:
CODE
1 #include <iostream.h>
2 main( )
3 {
4 int mark[10] = { 100,90,65,45,87,52,99,97,87,98} , found ,
index ;
5 int search;
6
7 cout << "Please enter the mark you want it\t" << endl;
8 cin >> search;
9
10 for ( index=0;index<10;index++)
11 {
12 if (mark[index] == search)
13 {
14 found=1;
15 break;
16 }
17 else
18 found=0 ;
19
20 }
21 if (found=1)
22 cout << "The number of student is:" << index++ ;
23 else
24 cout << "No Body has this mark" ;
25 return 0;
26 }
دعـنا الآن نقوم بشـرح الكـود السـابق؛ كمـا تـرى فلقـد وضعــنا فـي السـطر
العاشر دالة تكراريـة وظيفـة هذه الدالة هـي التحرك من أول عـنصر إلى آخـر
عـنصر في المصفوفـة ؛ كل عـنصر من العـناصر سيقوم بمقارنــتها مـع الـرقم
الذي أدخله المستخـدم search وإذا وجـد البرنـامج أن المقارنــة نجحـت فـي
السطر 12 سيقوم بإعـطاء المتغير found القيمة 1 ؛ ثم يخرج مـن التكـرار for
نهائياً وينتقل إلى السطر 21 ؛ أما إذا لم تنجح المقارنـة في السطر 12 فيقوم
البرنامج بالإنتقال إلى السطر 17 ويقوم بإسناد القيمة 0 إلـى المتغيـر found
ثم يرجع إلى قمة التكرار ويقوم بمقارنـة عـنصر آخر مـن المصفوفــة فـإذا لـم
يجد فكما تعلم أن قيمـة found ستكون صفر ؛ نعـود إلى السطر 21 في حال
كانت found تساوي القيمة 1 فسينفذ البرنامج السطر 22 وإذا وجد البرنـامج
أن قيمة found هي صفر فإنه ينفذ السطر 24 ؛ كما تلاحظ عـند طباعــة رقـم
المصفـوفـة في السطر الـ 23 فإن البرنامج يضيف واحد إلى الرقم الأساسي
وأعتقد أنك تعرف لماذا!.
الطريقة السابقـة هـي طريقـة البحث المتسلسل أو المتتالي.
طريقة البحث المتتالي هـي إحدى الطرق المعــتمدة فـي البحـث سـوف نقـوم مـن
خلال هذا القسم معـرفة ما تتضمنـه هذه الطريقـة.
أفضل طريقـة لكي تتناول هذا الموضوع هـو وضعـه عبر كـود
مثال كـودي:
أكتب برنامج يطلب البرنامج فيه من المستخـدم إدخال درجـة أحد الطـلاب ثـم يقـوم
البرنامج بالبحث داخل مضفوفة مخـزنـة مسبقاً في البرنامج عـن رقـم هـذا الطالـب
الذي أحـرز النتيجـة المدخلة ويقوم بإدخال رقم الطالب في المصفوفـة؟
ومصفوفة درجات الطلاب هـي كالتالي:
int mark[10] = { 100,90,69,45,87,52,99,98,99,88} ;
حل المثال:
حــل هــذا الســؤال بســيط لنحــدد أولاً المــدخلات؛ أول مــدخل بــالطبع هـــي
مصفوفـة الـدرجات (ليسـت مـدخل بالتحديـد ولكـن يكفـي أنهـا مهيئـة داخـل
البرنامج) ؛ ثم يطلب البرنامج مـن المستخــدم إدخـال الدرجــة المـراد البحـث
عـنها وهذا المدخل الثاني ؛ بعـد ذلـك يقـوم البرنـامج بمقارنــة جميـع درجـات
الطلاب مع الرقم المدخل فإذا وجده يقوم بطبـاعـة رقم الطالب وإذا لـم يجـده
يخبر المستخدم أنـه لا وجود لهذه الدرجـة. كما تلاحـظ فسنضـطر لإستخــدام
دالة تكرارية للبحث والأمر الثاني دالة للقرارات لتقرير إذا كـان الـرقم المـدخل
موجوداً أو لأ.
أيضاً سنحتــاج متغيـر يسـتطيع تقريـر إذا مـا كـان البرنـامج وجـد القيمـة أو لأ؛
وسنسميـه found بحيث أنـه إذا أرجع قيمـة تسـاوي الصفر فإن النتيجـة غيـر
موجودة وإذا أرجع قيمـة تساوي الواحد فإن النتيجـة موجودة
والكود سيكون كما يلي:
CODE
1 #include <iostream.h>
2 main( )
3 {
4 int mark[10] = { 100,90,65,45,87,52,99,97,87,98} , found ,
index ;
5 int search;
6
7 cout << "Please enter the mark you want it\t" << endl;
8 cin >> search;
9
10 for ( index=0;index<10;index++)
11 {
12 if (mark[index] == search)
13 {
14 found=1;
15 break;
16 }
17 else
18 found=0 ;
19
20 }
21 if (found=1)
22 cout << "The number of student is:" << index++ ;
23 else
24 cout << "No Body has this mark" ;
25 return 0;
26 }
دعـنا الآن نقوم بشـرح الكـود السـابق؛ كمـا تـرى فلقـد وضعــنا فـي السـطر
العاشر دالة تكراريـة وظيفـة هذه الدالة هـي التحرك من أول عـنصر إلى آخـر
عـنصر في المصفوفـة ؛ كل عـنصر من العـناصر سيقوم بمقارنــتها مـع الـرقم
الذي أدخله المستخـدم search وإذا وجـد البرنـامج أن المقارنــة نجحـت فـي
السطر 12 سيقوم بإعـطاء المتغير found القيمة 1 ؛ ثم يخرج مـن التكـرار for
نهائياً وينتقل إلى السطر 21 ؛ أما إذا لم تنجح المقارنـة في السطر 12 فيقوم
البرنامج بالإنتقال إلى السطر 17 ويقوم بإسناد القيمة 0 إلـى المتغيـر found
ثم يرجع إلى قمة التكرار ويقوم بمقارنـة عـنصر آخر مـن المصفوفــة فـإذا لـم
يجد فكما تعلم أن قيمـة found ستكون صفر ؛ نعـود إلى السطر 21 في حال
كانت found تساوي القيمة 1 فسينفذ البرنامج السطر 22 وإذا وجد البرنـامج
أن قيمة found هي صفر فإنه ينفذ السطر 24 ؛ كما تلاحظ عـند طباعــة رقـم
المصفـوفـة في السطر الـ 23 فإن البرنامج يضيف واحد إلى الرقم الأساسي
وأعتقد أنك تعرف لماذا!.
الطريقة السابقـة هـي طريقـة البحث المتسلسل أو المتتالي.
ليست هناك تعليقات:
إرسال تعليق