البرمجة

تمرير وفرز المصفوفات في لغة البرمجة C

في برمجة C، يُمكن تمرير المصفوفات إلى الدوال إما عن طريق القيمة (pass by value) أو عن طريق الرجوع (pass by reference). ومن أجل تمرير المصفوفة بالرجوع، يُمكن استخدام المؤشرات. لكن قبل الانتقال إلى كيفية تمرير المصفوفة والحصول على النتائج، دعونا نقوم بتحسين الكود الحالي وإصلاح بعض الأخطاء البرمجية.

أولاً، يبدو أن هناك خطأً في تعريف المصفوفة وتعبيرها. يُفضل تعريف المصفوفة باستخدام الكلمة الرئيسية “struct”، واستخدام malloc بشكل صحيح.

c
#include #include struct MyStruct { int number; float points; }; void sortList(struct MyStruct *array, int size) { // اكتب الكود الخاص بفرز المصفوفة هنا } int main() { int size = 10; struct MyStruct *myArray = (struct MyStruct*)malloc(size * sizeof(struct MyStruct)); // املأ المصفوفة بالقيم هنا // ابعث المصفوفة إلى الدالة للفرز sortList(myArray, size); // اطبع المصفوفة بعد الفرز for (int i = 0; i < size; i++) { printf("%d, %.2f\n", myArray[i].number, myArray[i].points); } // تحرير الذاكرة المخصصة باستخدام malloc free(myArray); return 0; }

الآن، تم تعديل الكود ليكون أكثر دقة. في السطور الأخيرة، تم إضافة تحرير الذاكرة المخصصة باستخدام الدالة free().

أما بالنسبة لتمرير المصفوفة بالرجوع، يُمكنك استخدام مؤشر إلى المصفوفة كمعلمة للدالة. سأقدم لك نموذجًا بسيطًا لكيفية تمرير المصفوفة وفرزها.

c
void sortList(struct MyStruct *array, int size) { // اكتب الكود الخاص بفرز المصفوفة هنا // يمكنك الوصول إلى العناصر باستخدام array[i].number و array[i].points } // في main، يمكنك استدعاء الدالة بالشكل التالي: // sortList(myArray, size);

يُمكنك الآن استخدام الدالة sortList لفرز المصفوفة والتلاعب بها.

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

بالطبع، دعونا نوسع على الموضوع بمزيد من المعلومات حول تمرير المصفوفات بالرجوع في C وكيفية التعامل معها.

عندما تقوم بتمرير مصفوفة إلى دالة في C، يتم تمرير نسخة من عنوان البداية (عنوان الذاكرة الأولي) للمصفوفة، وهو ما يُعرف باسم تمرير المصفوفة بالرجوع. هذا يعني أن أي تغيير تقوم به داخل الدالة للعناصر في المصفوفة سيتم نقلها أيضًا إلى المصفوفة الأصلية في الدالة الرئيسية.

في الكود السابق، تم استخدام مؤشر إلى هيكل البيانات (struct) لتمثيل المصفوفة. يتيح هذا لك التحكم في العناصر المختلفة في المصفوفة، مثل الرقم (number) والنقاط (points) بشكل منفصل.

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

عندما تعود الدالة sortList إلى الدالة الرئيسية (main في هذه الحالة)، ستجد المصفوفة مرتبة ويمكنك طباعة النتائج كما هو موضح في الكود.

يُفضل أيضًا مراعاة التحقق من صحة الفهرسات عند الوصول إلى عناصر المصفوفة لتجنب أخطاء الوصول غير المرغوب فيها.

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