البرمجة

تحسين برنامج الأرقام العشوائية في C

في بداية الأمر، يظهر البرنامج الذي قمت بتطويره لتوليد 10000 رقم عشوائي بين 0 و 6 وفحص كم مرة ظهر كل رقم بشكل عشوائي. ومن خلال النظر إلى الشيفرة المصدرية، يبدو أن هناك بعض الأمور التي يمكن تحسينها.

أولًا، يوصى بتحديث الجزء الثاني من البرنامج، حيث يتم استخدام مدخلاتين (i و j) لفحص التكرار. عليك تصحيح حلقة الفحص الداخلية بحيث تبدأ من j = i + 1 بدلاً من j = i + 1، وتنتهي عند j < ARR_SIZE بدلاً من j < ARR_SIZE - 1. الأمر يكمن في أن الحلقة الداخلية يجب أن تستمر حتى نهاية الصف الخاص بالمصفوفة، وليس إلى ARR_SIZE - 1.

c
for (i = 0; i < ARR_SIZE; i++) { counter = 0; for (j = i + 1; j < ARR_SIZE; j++) // تم تصحيح هنا { if (arrCube[i] == arrCube[j]) { counter++; } } printf("%d times %d showed up\n", counter, arrCube[i]); }

ثانيًا، يمكنك بالفعل تحسين البرنامج عن طريق استخدام مصفوفة إضافية لتتبع عدد مرات ظهور كل رقم. في هذه الحالة، يمكنك القضاء على الحلقة الداخلية وتحسين أداء البرنامج:

c
int counterArr[NUM_OF_FACES] = {0}; // مصفوفة لتخزين عدد مرات ظهور كل رقم for (i = 0; i < ARR_SIZE; i++) { counterArr[arrCube[i]]++; } for (i = 0; i < NUM_OF_FACES; i++) { printf("%d times %d showed up\n", counterArr[i], i); }

هذا التحسين يجعل البرنامج أقل تعقيدًا وأكثر فعالية من حيث الأداء، حيث تقوم المصفوفة counterArr بتخزين عدد مرات ظهور كل رقم مباشرة.

المزيد من المعلومات

بالطبع، دعنا نوسع المناقشة ونضيف المزيد من المعلومات حول برنامجك وكيف يمكن تحسينه بشكل أفضل.

فيما يخص برنامجك الحالي، يظهر أنك تستخدم لغة البرمجة C، وهو لغة قوية وفعالة لتطوير البرامج. تحديدًا، قمت بتوليد مصفوفة arrCube تحتوي على 10000 رقم عشوائي بين 0 و 6 باستخدام دالة rand()، وبعد ذلك، استخدمت حلقتين متداخلتين لفحص عدد مرات ظهور كل رقم.

في النصائح للتحسين، تم تصحيح الحلقة الداخلية لتتناسب مع هدفك، وتم تقديم تحسين آخر باستخدام مصفوفة إضافية لتجنب الحلقة الداخلية بشكل كامل وتحسين أداء البرنامج.

تحتاج أيضًا إلى النظر في بعض النقاط الأخرى، مثل التعامل مع الماكرو (ARR_SIZE و NUM_OF_FACES) وفهم كيفية عمل الدوال المستخدمة (srand() و rand() و time()). كما يمكن أن تكون هناك إضافات مستقبلية لتطوير برنامجك، مثل إضافة واجهة مستخدم بسيطة لإظهار النتائج بشكل أفضل.

بصورة عامة، يجب عليك أيضًا أن تتأكد من معالجة أي أخطاء قد تحدث، وتوثيق البرنامج بشكل جيد لتسهيل فهم الآخرين لهذا الكود.

زر الذهاب إلى الأعلى