Download as pdf or txt
Download as pdf or txt
You are on page 1of 3

‫تدريبات‬

‫باستخدام لغة ‪++c‬‬


‫‪ .1‬قم بكتابة برنامج يقوم بترتيب مصفوفة أرقام صحيحة باستخدام خوارزمية األختيار ‪ selection‬مرة‪ ،‬ثم‬
‫باستخدام خوارزمية الفقاعة ‪ bubble‬مرة أخرى‪.‬‬
‫قم باستخدام الدالة ‪ rand‬لتوليد األرقام عشوائيا بدال من قراءتها عبر لوحة المفاتيح‪ .‬اجعل حجم المصفوفة‬
‫‪ .10000‬قم بحساب سرعة كال من الخوارزميتين بواسطة دوال المكتبة ‪time.h‬‬
‫‪ .2‬قم بترتيب مصفوفة من السالسل الحرفية باستخدام خوارزمية الحشر ‪ .insertion‬قم بقراءة السالسل من ملف‬
‫نصي‪.‬‬
‫‪ .3‬بعد ترتيب السالسل في المثال السابق‪ ،‬قم بالبحث عن سلسلة بواسطة خوارزمية البحث الثنائي ‪binary‬‬
‫‪.search‬‬
‫‪ .4‬بواسطة مفاهيم الـ ‪ ،oop‬قم بتعريف ‪ class‬باسم ‪ stck‬لتمثيل مكدس ‪ stack‬على النحو التالي‬
‫‪class stck‬‬
‫{‬
‫‪int‬‬ ‫;‪t, mx‬‬
‫‪int‬‬ ‫;]‪items [100‬‬
‫‪public:‬‬
‫;) ‪stck (int‬‬
‫;)‪void push (int‬‬
‫;)( ‪void pop‬‬
‫‪int‬‬ ‫‪top‬‬ ‫;)(‬
‫;)( ‪bool empty‬‬
‫;}‬
‫بحيث ‪:‬‬
‫يمثل المتغير ‪ t‬موقع آخر عنصر تمت إضافته للمكدس‪ ،‬وعندما يكون المكدس فارغ تساوي قيمته‬
‫‪.-1‬‬
‫ويمثل المتغير ‪ mx‬السعة الفعلية للمكدس‪ ،‬وهي قيمة ال تتجاوز ‪.100‬‬
‫المصفوفة ‪ items‬هي مكان تخزين عناصر المكدس‪.‬‬
‫دالة البناء تستقبل قيمة صحيحة تمثل سعة المكدس الفعلية‪ ،‬وإذا كانت أكبر من ‪ 100‬أو أقل من ‪10‬‬
‫تستخدم محلها القيمة ‪.10‬‬
‫الدالة ‪ pop‬تحذف‪ /‬تخرج القيمة األخيرة ( أي آخر قيمة تم إدخالها) من المكدس‬
‫الدالة ‪ top‬ترجع القيمة األخيرة وال تحذفها‪ ،‬وإن كان المكدس فارغ‪ ،‬اطبع رسالة وانه التنفيذ بالدالة‬
‫‪exit‬‬
‫الدالة ‪ empty‬ترجع ‪ true‬إذا كان المكدس فارغ‪.‬‬
‫وال تنس تعديل قيمة ‪ t‬عند إضافة‪ /‬حذف قيمة‪ ،‬أيضا ال تنس إعطائه قيم ابتدائية‪.‬‬
‫‪ .5‬أعد كتابة البرنامج السابق بحيث تكون ‪ items‬مؤشر لمصفوفة‪ ،‬وتكون سعة المكدس غير مقيدة برقم شرط أن‬
‫تكون أكبر من ‪.10‬‬
‫‪ .6‬قم بإكمال تعريف الـ ‪ class Q‬لتمثيل طابور على النحو التالي‬
‫‪class Q‬‬
‫{‬
‫‪int‬‬ ‫;]‪front,rear,items [10‬‬
‫‪public:‬‬
‫‪Q‬‬ ‫;)(‬
‫‪void‬‬ ‫‪enq‬‬ ‫;)‪(int‬‬
‫‪void‬‬ ‫‪deq‬‬ ‫;)(‬
‫‪int‬‬ ‫‪out‬‬ ‫;)(‬
‫‪bool‬‬ ‫;)( ‪empty‬‬
‫;}‬

‫المتغير ‪ front‬يمثل موقع أول عنصر دخل الطابور والمتغير ‪ rear‬يمثل آخر عنصر دخل‪ .‬عند إنشاء الطابور‬
‫يكون كال منهما ‪ -1‬للداللة على أن الطابور فارغ‪.‬‬
‫المصفوفة ‪ items‬تخزن بها عناصر الطابور التي ال يتجاوز عددها ‪.10‬‬
‫الدالة ‪ enq‬إلضافة عنصر شرط أن ال يكون الطابور ممتلىء والدالة ‪ deq‬لحذف عنصر‪.‬‬
‫الدالة ‪ out‬إلعادة قيمة العنصر الموجود في أول الطابور دون حذفها‪ ،‬وإذا كان الطابور فارغ اطبع رسالة وانه‬
‫البرنامج بالدالة ‪.exit‬‬
‫‪ .7‬قم بكتابة كود المثال السابق بحيث تمثل الـ ‪ class Q‬طابور دائري‪.‬‬
‫‪ .8‬باستخدام ‪ struct Stu‬الموضحة كما يلي‪ ،‬قم بتعريف الـ ‪ class singularLinkedList‬لتمثيل قائمة‬
‫متصلة مفردة‪:‬‬
‫‪struct ٍStu‬‬
‫{‬ ‫;‪string name,ID‬‬
‫‪Stu‬‬ ‫;‪*nxt‬‬
‫;}‬

‫‪class singularLinkedList‬‬
‫{‬

‫‪Stu‬‬ ‫;‪*head‬‬
‫‪public:‬‬
‫‪singularLinkedList‬‬ ‫;)(‬
‫‪~singularLinkedList‬‬ ‫;)(‬
‫‪void add‬‬ ‫;)‪(string,string‬‬
‫‪void print‬‬ ‫;)(‬
‫;}‬
‫المؤشر ‪ head‬يشير إلى بداية القائمة‪ ،‬دالة البناء تقوم بضبط القائمة الجديدة بحيث تكون فارغة‪ ،‬ودالة الهدم‬
‫تقوم بهدم القائمة عندما ينتهي عمر الـ ‪.object‬‬
‫واجب (‪:)1‬‬
‫مجموعة ‪ —1‬األحد ‪ 8‬إلى ‪10‬‬
‫ماهو المؤثر ‪ new operator‬في لغة ‪ ++c‬؟ كيف يعمل؟‬
‫ماهي مزايا وعيوب الحجز الديناميكي ‪dynamic allocation of memory‬؟‬
‫مجموعة ‪ —2‬األحد ‪ 10‬إلى ‪12‬‬
‫عند تنفيذ أي برنامج تقسم الذاكرة المخصصة له إلى مناطق منها الـ ‪ stack‬والـ ‪ .heap‬ماذا يقصد بكال منهما؟‬
‫اشرح‪.‬‬
‫ما هو المؤثر ‪delete‬؟ اشرح آلية عمله ولماذا نحتاجه‪.‬‬
‫مجموعة ‪ —3‬األحد ‪ 12‬إلى ‪2‬‬
‫ماهي الفروقات بين المصفوفات و القوائم المتصلة؟‬
‫متى تستخدم المصفوفات ومتى نستخدم القوائم المتصلة؟‬
‫مجموعة ‪ — 4‬األحد ‪ 2‬إلى ‪4‬‬
‫ماهي خوارزمية ‪ interpolation search‬؟‬
‫ماهي عالقة خوارزمية البحث الثنائي بالخوارزمية السابقة؟ اشرح‬
‫التسليم األحد ‪ /6‬يناير‪ ،‬وإذا تعذر الحضور للكلية يرسل الواجب عبر اإليميل‪ITDSCuorseLab@gmail.com :‬‬
‫درجة الواجب ‪2‬‬

You might also like