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

المسابقة الأولى للبرمجة للمبتدئين بلغة C++ او Java

مغلق
بدأه OpenMindDeveloper في 23 نوفمبر 2003 · 5 رد · 1,763 مشاهدة · في ارشيف قسم C/C++
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بسم الله الرحمن الرحيم

هذه المسابقة هى من اقتراح عضو فى المنتدى بعمل مسابقة للمبتدئين ...

هذه المسابقة تشترط معرفتك الجيده لـ OOP فى C++

هذا السؤال يركز على Class عامة ....

انا سأطرح عليكم اول مسأله و الفائز طبعا من يحقق افضل و اسرع و اصغر حل ...

الجوائز : أكيد التأهل الى المسابقة المتقدمة ......

المسابقة أيضا من 10 مسائل ....

و ستعرض الاسئلة تسلسليا

السؤال الأول :-

Safe Array

Weakness of C++ that it doesn't automatically check array indexes to see if they are in bounds> (this makes array operations faster but less safe>) we can a class to create a safe array that checks the index of all array accesses>

write a class called safearay that uses an int array of fixed size (call it LIMIT) as its only data member> There will be two member functions> The first - putel()- , takes an index number and an int value as arguments and inserts the int value into the array at the index.

The second, -getel()-, takes an index number as an argument and returns the int value of the element with that index.

example:

safearay sa1; //define a safearay object

int temp=12345; //define an int value

sa1.putel(7,temp); //insert the value of temp into array at index 7

temp.getel(7); //obtain value from array at index 7

both functions should check the index argument to make sure it is not less than 0 or greater then LIMIT - 1. You can use this array without fear of writing over other parts of memory.

أتمنى ان يعجبكم السؤال ......

والسؤال الثانى فى ان نجعلها مثل built-in array اى باستخدام Operator Overloading

(operator [] )

فى انتظار حلولكم

ملاحظة لمستخدمى Java و C# الرجاء عمل Jagged Array

طبعا لاتوجد مثل هذه المشكلة فى Java او C# لذا الرجاء عمل شيئ تقريبى لها ...

واتمنى من المتسابق ان يرفق الحل

−1
#2

مشكووووووووووووور اخوي Ahmedvc

و انا ان شاء الله بحاول احلها و اذا ما قدرت باسألك .. :)

اخوك تيمون

#3

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

مشكورين ياأخ Ahmedvc على الاهتمام بموضوع المسابقات ,,

لكن ياريت يكون السؤال باللغة العربية ليسهل فهمه لأكبر عدد من الأعضاء .. علما أن هناك بعض الأعضاء يشتكي من كون الاسئلة باللغة الانجليزية ,,,

ويصبح العبء عبئين عليهم فهم الكلام وفهم السؤال ,,,,

وواصل ونحن معك باذن الله ,,,

وففقك الله ,,

banner_60_468.gif

NOTHING IS IMPOSSIBLE

#4

السلام عليكم

المصفوفة الآمنة

نقطة ضعف فى لغة السي بلس بلس أنّه لا يفحص الفهارس تلقائيا فى المصفوفة ليرى ان كانت فى الحدود

الموضوعة ام لا

مثلا لو قلنا

int a[3]

a[5]=3; هذا خطأ لانه خارج الحدود

هذا يجعل خزانة عملياتالمصفوفة أسرع نحن فى هذه المسأله نريد عمل مصفوفة امنه تقوم بفحص الفهارس .

إكتب class اسمها safearay

الذي يستعمل مصفوفة من نوع int حجمها ثابت كعضو بياناته الوحيد

وستكون هناك أعضاء :

العضو الاول يدعى - putel () - وظيفته ان يأخذ رقم دليل وقيمة int ويدخل قيمة int

في المصفوفة .

العضو الثاني يدعى - getel () -, يأخذ رقم الفهرس ويرجع قيمة int للعنصر بتلك

المصفوفة.

مثال:

safearay sa1; //عرف المصفوفة الامنة

int temp=12345; //عرف عدد صحيح

sa1.putel(7,temp); //أضف قيمة الى الفهرس الرابع فى المصفوفة

temp.getel(7); //احصل على القيمة الموجوده فى الفهرس السابع

تلك الاعضاء يجب أن تفحص الفهرس لتتأكد انه ليس أقل من 0 أو أعظم من اكبر حد للمصفوفة .

أنت تستطيع إستعمال هذه المصفوفة بدون خوف من الكتابة على أجزاء أخرى من الذاكرة.

أتمنى ان يعجبكم السؤال. . . . . .

السؤال الثانى فى ان نجعلها مثل المصفوفة الموجوده فعلا باستخدام تحميل المعاملات (Operator

Overloading)

(معامل [])

الافضل هو الاسئلة بالانجليزى ............ لأن كود السى بالانجليزى ...

ويكون هكذا اقرب الى الفهم ....

وانا فى انتظار اجوبتكم .....

#5

السلام عليكم :

أولا كل عام وأنتم جميعا بألف خير ...

هذه محاولتي البسيطة لحل هذا السؤال ... أتمنى سماع ملاحظاتكم ...

بالنسبة للسؤال الثاني : أرجو توضيح السؤال أكثر ...

تحياتي

SafeArray.cpp

#6

أخى Explorer_Net

اشكرك جدا على تفاعلك و مشاركتك ...

وعلى هذه فانى سأنبهك الى نقطة الكود فيه غلطة واحد فقط

وكمان دالة init تقوم بتضيع وقت لا فائده منه هذا يخفض من كفاءة البرنامج

اتمنى منك اصلاح العيوب والانتقال الى السؤال الثانى

سنبسطه اكثر :

نجعل حجم المصفوفة متغير حسب مايدخل المستخدم

مثلا safearay sa(10)

مساعده : قم باستخدام المعامل new لحجز مكان فى heap

و delete لحذف المكان ...

بالنسبة لتحميل المعامل :

مثلا :

safearay sa(10);

sa[1]=5

هذا هو تحميل الclass بالمعامل [] ....

بالنسبة الى مستخدمين java و C# هذه يطلق عليها indexers

واتمنى ان يكون السؤال واضح ...

وفى انتظار اجوبتكم ....

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

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