السؤال الثاني:-
اكتب برنامجا تعرف فيه الصنف stack (المكدس) والعمليات الأساسية التي يتم إجراؤها عليها. المكدس يعمل كما يلي: يتم إضافة القيم إلى مصفوفة بحيث تضاف القيم الجديدة في رأس المصفوفة (top) وكل مرة تضاف قيمة جديدة يتم إضافتها فوق رأس المصفوفة القديم وتصبح هذه القيمة هي رأس المصفوفة الجديد. وعند استرجاع القيم يتم استرجاع القيمة الموجودة حاليا في رأس المصفوفة وتصبح القيمة الموجودة تحتها هي رأس المصفوفة الجديد. المكدس تعمل على أساس (First In Last Out) أي القيمة التي تضاف أولا إلى المكدسة تسترجع بعد أن يتم استرجاع جميع القيم التي أضيفت بعدها.
عرف المكدس على شكل صنف قالبي لتتمكن من استخدام نفس التعريف مع أنواع مختلفة من المتغيرات.
القسم الخاص من هذا الصنف يشمل:- حجم stack من نوع int (عدد العناصر في stack).
- موقع رأس stack (top) من نوع int بحيث تكون قيمته -1 إذا كانت stack فارغة.
- مصفوفة لتخزين عناصر stack (باستخدام المؤشرات).
القسم العام من هذا الصنف يشمل:- بناء مع إمكانية تحديد عدد العناصر في stack (يتم افتراض أن العدد 10 إذا لم يتم تحديد قيمة).
- اقتران لإضافة عنصر(push) إلى stack حيث يجب تنفيذه باستخدام إعادة تعريف المعامل ( + ).
- اقتران لاسترجاع القيمة الموجودة في رأس stack (pop).
- اقتران لتحديد إذا كانت stack فارغة.
- اقتران لتحديد إذا كانت stack ممتلئة ولا تتسع للمزيد من العناصر.
- اقتران لطباعة عناصر stack باستخدام إعادة تعريف المعامل >> .
- اقتران لمساواة متغير من نوع stack مع متغير آخر باستخدام إعادة تعريف المعامل = .
يجب أن يكون برنامج الاختبار واضحا ويبين كيفية استخدام الاقترانات المذكورة أعلاه.
السؤال الثالث:-
عرف الصنف date كما يلي:
القسم الخاص:- اليوم ، الشهر والسنة من نوع int.
القسم العام:- بناء مع إعطاء القيم للمتغيرات في القسم الخاص.
- اقتران لتحديد التاريخ.
قم بإعادة تعريف عملية الإدخال << بحيث تقوم بقراءة اليوم والشهر والسنة.
قم بإعادة تعريف عملية الإخراج >> بحيث تقوم بطباعة الشهر والسنة واليوم كما في المثال التالي:
Feb, 18 2006.
عرف الصنف person كما يلي:
القسم الخاص: - اسم الشخص
- تاريخ الميلاد من نوع date.
القسم العام:- بناء مع إمكانية تحديد الاسم
- اقتران لتحديد تاريخ ميلاد الشخص
- اقتران print لطباعة معلومات الشخص.
عرف الصنف student المشتق من الصنف person أعلاه كما يلي:
القسم الخاص:القسم العام:- بناء مع إمكانية تحديد اسم الطالب ومعدله
- اقتران print لطباعة معلومات الطالب.
عرف الصنف teacher المشتق من الصنف person كما يلي:
القسم الخاص:- عدد الأبحاث المنشورة للأستاذ
القسم العام:- بناء مع إمكانية تحديد اسم الأستاذ وعدد الأبحاث المنشورة.
- اقتران print لطباعة معلومات الأستاذ.
استخدم خاصية تعدد الأوجه (polymorphism) لاستدعاء اقتران الطباعة الخاص بكل صنف وذلك من خلال مؤشر من نوع person ثم يتم استخدام نفس المؤشر للتأشير على متغيرات من نوع student و teacher.
اكتب برنامج لاختبار الأصناف المذكورة أعلاه.
ولكم جزيل الشكر والعرفان