الانتقال إلى المحتوى الرئيسي

كيفية إنشاء مصفوفة ديناميكية في ج: دليل مفصل

المصفوفة الديناميكية هي أداة متعددة الاستخدامات تسمح لك بتعيين حجم المصفوفة حسب الحاجة. على عكس المصفوفة الثابتة ، يمكن تغيير حجم المصفوفة الديناميكية أثناء تنفيذ البرنامج. في ال لغة البرمجة ج ، يتم إنشاء مصفوفة ديناميكية من خلال استخدام وظائف مالوك() ومجانية ().

عند إنشاء مصفوفة ديناميكية ، يتم تخصيص الذاكرة أولا باستخدام وظيفة مالوك (). تأخذ وظيفة مالوك () وسيطة واحدة-عدد البايتات التي سيتم تخصيصها. تقوم الوظيفة بعد ذلك بإرجاع مؤشر إلى بداية منطقة الذاكرة المخصصة. إذا تعذر تخصيص الذاكرة ، تقوم وظيفة مالوك() بإرجاع مؤشر فارغ.

بعد الانتهاء من استخدام المصفوفة الديناميكية ، تحتاج إلى تحرير الذاكرة المخصصة لمنع تسرب الذاكرة. للقيام بذلك ، استخدم الوظيفة المجانية (). فإنه يأخذ مؤشر إلى منطقة الذاكرة التي تحتاج إلى تحرير. بعد استدعاء الدالة المجانية () ، يصبح المؤشر غير صالح ، وقد يؤدي الوصول إليه إلى حدوث أخطاء في البرنامج.

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

  1. ما هو مجموعة ج وكيف يعمل?
  2. الوصف والمبادئ الأساسية للمصفوفات ج
  3. كيف يمكنني إنشاء وتهيئة مجموعة ج في برنامج?
  4. تعليمات مفصلة لإنشاء وتهيئة مجموعة ج
  5. كيف يمكنني إضافة أو إزالة عناصر من مجموعة ج?
  6. طرق لإضافة وإزالة العناصر في مجموعة ج
  7. إضافة عناصر إلى مجموعة ج
  8. إزالة العناصر من مجموعة ج
  9. سؤال وجواب
  10. ما هي مجموعة ديناميكية في ج?
  11. كيف يمكنني إنشاء مجموعة ديناميكية في ج?
  12. كيف يمكنني تغيير حجم مجموعة ديناميكية في ج?
  13. كيف يمكنني تحرير الذاكرة المخصصة لمجموعة ديناميكية في ج?
  14. كيف يمكنني التحقق مما إذا تم تخصيص الذاكرة بنجاح لمجموعة ديناميكية في ج?

ما هو مجموعة ج وكيف يعمل?

أ صفيف ج هي مجموعة مرتبة من العناصر من نفس النوع المخزنة بشكل مستمر في ذاكرة الكمبيوتر.

كل عنصر من عناصر المصفوفة له فهرس خاص به-قيمة عدد صحيح تشير إلى موقعه في المصفوفة. تبدأ الفهارس من 0 وتنتهي بقيمة واحدة أقل من عدد العناصر في المصفوفة. على سبيل المثال ، ستحتوي المصفوفة التي تحتوي على 5 عناصر على فهارس من 0 إلى 4.

يتم تحديد حجم المصفوفة (عدد العناصر) في وقت إنشائها ولا يمكن تغييرها أثناء تنفيذ البرنامج.

لإعلان صفيف في ج ، يتم استخدام بناء الجملة التالي:

نوع العنصر اسم الصفيف [الحجم];

حيث نوع العنصر هو نوع البيانات التي سيتم تخزين عناصر مجموعة (على سبيل المثال ، إنت ، تعويم ، شار) ، اسم مجموعة هو اسم التعسفي الذي تختاره لمجموعة ، والحجم هو عدد العناصر في مجموعة.

على سبيل المثال ، تعلن التعليمة البرمجية التالية مجموعة من الأعداد الصحيحة المسماة" أرقام " وحجم 5:

أرقام كثافة العمليات [5];

يتم استخدام الفهرسة للوصول إلى عناصر المصفوفة. يشار إلى الفهرس بين قوسين مربعين بعد اسم المصفوفة ، على سبيل المثال:

أرقام [0] = 1 ؛ / / تعيين القيمة 1 للعنصر الأول

تبدأ الفهرسة من 0 ، لذا فإن العنصر الأول من المصفوفة يحتوي على فهرس 0 ، والثاني هو 1 ، والثالث هو 2 ، وهكذا.

يمكن تهيئة المصفوفة أثناء إعلانها عن طريق تعيين قيم لعناصرها. على سبيل المثال:

أرقام كثافة العمليات[5] = {1, 2, 3, 4, 5};

في هذا المثال ، ستحتوي مصفوفة الأرقام على خمسة عناصر بقيم من 1 إلى 5.

ج يمكن أن تكون المصفوفات متعددة الأبعاد ، أي أنها تحتوي على عدة أبعاد. لإعلان مصفوفة متعددة الأبعاد ، يتم استخدام بناء الجملة التالي:

نوع العنصر اسم الصفيف [البعد الأول_الحجم] [حجم البعد الثاني]...;

على سبيل المثال ، تعلن التعليمة البرمجية التالية مجموعة ثنائية الأبعاد من الأعداد الصحيحة المسماة "مصفوفة" وقياس 3 3 3:

مصفوفة كثافة العمليات[3] [3];

للوصول إلى عناصر مصفوفة متعددة الأبعاد ، يتم استخدام الفهرسة لكل بعد ، على سبيل المثال:

مصفوفة[0][0] = 1; // تعيين قيمة للعنصر الأول

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

الوصف والمبادئ الأساسية للمصفوفات ج

المصفوفات هي واحدة من هياكل البيانات الرئيسية في لغة البرمجة ج. إنها تسمح لك بتخزين ومعالجة مجموعات من العناصر من نفس النوع الموجودة بالتتابع في الذاكرة.

المبادئ الأساسية للعمل مع صفائف ج:

  1. الإعلان والتهيئة: لإنشاء مصفوفة ، يجب أن تعلن عن نوعها واسمها وتحديد حجمها. عند التصريح ، يمكنك تهيئة المصفوفة على الفور عن طريق تحديد قيم عناصرها بين قوسين معقوفين.
  2. الفهرسة: يتم ترقيم عناصر المصفوفة من البداية. للوصول إلى عنصر صفيف ، حدد فهرسه بين قوسين مربعين بعد اسم الصفيف. على سبيل المثال ، آر[0] يشير إلى العنصر الأول من مجموعة آر.
  3. الوصول إلى العناصر وتعديلها: من الممكن الوصول إلى عناصر المصفوفة للقراءة أو الكتابة. للوصول إلى عنصر صفيف ، يتم استخدام عامل التشغيل [] مع فهرس.
  4. العمل مع التكرارات: لمعالجة جميع عناصر المصفوفة ، يمكنك استخدام الحلقات (على سبيل المثال ، أو أثناء). في كل تكرار ، يمكنك الوصول إلى العنصر التالي من المصفوفة عن طريق زيادة الفهرس.
  5. باستخدام المؤشرات: يمكن اعتبار المصفوفات في ج كمؤشرات لعناصرها الأولى. وبالتالي ، يمكنك استخدام المؤشرات للعمل مع عناصر المصفوفة.
  6. صفائف ديناميكية: بالإضافة إلى المصفوفات الثابتة ، التي لها حجم ثابت عند تجميعها ، يمكن إنشاء المصفوفات الديناميكية في ج باستخدام وظائف لتخصيص وتحرير الذاكرة (على سبيل المثال ، مالوك و حر).

توفر المصفوفات في ج طريقة ملائمة لتنظيم وإدارة مجموعات العناصر من نفس النوع. الاستخدام السليم للمصفوفات يسمح بمعالجة فعالة للبيانات في البرنامج.

كيف يمكنني إنشاء وتهيئة مجموعة ج في برنامج?

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

الخطوة 1: إعلان صفيف

إعلان صفيف في أ ج يتكون البرنامج من تحديد نوع البيانات ، متبوعا باسم المصفوفة والأقواس المربعة [] ، والتي تحدد حجم المصفوفة. هنا مثال على إعلان مجموعة من الأعداد الصحيحة:

أرقام كثافة العمليات [5]; 

في هذا المثال ، نعلن مصفوفة تسمى" أرقام " ، والتي يمكن أن تحتوي على 5 أعداد صحيحة.

الخطوة 2: تهيئة المصفوفة

بعد إعلان المصفوفة ، يمكننا تهيئتها ، أي تعيين قيم أولية لعناصر المصفوفة. في ج ، هناك طريقتان لتهيئة صفيف: ثابت وديناميكي.

يتم تنفيذ التهيئة الثابتة للمصفوفة عن طريق تحديد جميع قيم العناصر بين قوسين معقوفين {} مفصولة بفواصل. على سبيل المثال:

أرقام كثافة العمليات[5] = {1, 2, 3, 4, 5}; 

في هذا المثال ، نقوم بتهيئة مصفوفة "الأرقام" بأعداد صحيحة من 1 إلى 5. إذا كان عدد أدوات التهيئة أقل من حجم المصفوفة ، فسيتم تهيئة العناصر المتبقية تلقائيا باستخدام الأصفار.

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

أرقام كثافة العمليات [5]; 

 إلى عن على (كثافة العمليات أنا = 0; أنا < 5; أنا i) 

 { 

 أرقام [أنا] = أنا + 1; 

 } 

في هذا المثال ، نقوم بإنشاء مصفوفة من" الأرقام " بخمسة عناصر ونملأها بقيم من 1 إلى 5 باستخدام حلقة.

الخطوة 3: استخدام المصفوفة

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

إلى عن على (كثافة العمليات أنا = 0; أنا < 5; أنا i)

{

برينتف ("٪د " ، أرقام [أنا]); 

 } 

في هذا المثال ، نعرض كل عنصر من عناصر المصفوفة على الشاشة باستخدام وظيفة برينتف ().

هذا كل شيء! الآن أنت تعرف كيفية إنشاء وتهيئة مجموعة ج في برنامج ج. حظا سعيدا في رحلتك إلى عالم البرمجة!

تعليمات مفصلة لإنشاء وتهيئة مجموعة ج

في ال لغة ج ، المصفوفة هي تسلسل مرتب لعناصر من نفس النوع. لإنشاء صفيف ج وتهيئته ، اتبع الإرشادات التالية:

    استخدم الحلقات لمعالجة عناصر المصفوفة. على سبيل المثال ، لإخراج جميع عناصر مصفوفة الأرقام:

برينتف ("٪د " ، أرقام [أنا]);

  1. 1. باستخدام مصفوفة ديناميكية:
  2. حدد الحجم الأولي للمصفوفة التي ستحددها (على سبيل المثال ، 10 عناصر).

تخصيص الذاكرة للمصفوفة باستخدام

مالوك ()

وظيفة. على سبيل المثال,

إنت * ديناميكاراي = (إنت*)مالوك(10 * حجم(إنت));

.

عندما تحتاج إلى إضافة عنصر إلى المصفوفة ، قم بتخصيص ذاكرة للعنصر الجديد وانسخ العناصر القديمة إلى المصفوفة الجديدة ، مع زيادة حجمها بمقدار 1. على سبيل المثال,

إنت * نيوراي = (إنت*)مالوك((10 + 1) * حجم(إنت));

  1. ل (إنت أنا = 0 ؛ أنا < 10 ؛ أنا {) {

نيوراي [أنا] = ديناميكاراي [أنا];

}

نيوراي [10] = 42;

مجانا (ديناميكاراي);

ديناميكاراي = نيوراي;

عندما تحتاج إلى حذف عنصر من مصفوفة ، قم بتخصيص ذاكرة لصفيف أصغر جديد وانسخ جميع العناصر باستثناء العنصر المحذوف في المصفوفة الجديدة. على سبيل المثال,

إنت * نيوراي = (إنت*)مالوك((10 - 1) * حجم(إنت));

إلى عن على (كثافة العمليات أنا = 0; أنا < 9; أنا i) {

نيوراي [أنا] = ديناميكاراي [أنا];

}

مجانا (ديناميكاراي);

ديناميكاراي = نيوراي;

2. باستخدام الهيكل:

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

3. باستخدام مصفوفة أو قائمة إضافية:

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

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

طرق لإضافة وإزالة العناصر في مجموعة ج

ج المصفوفات عبارة عن كتل متجاورة من الذاكرة تخزن عناصر من نفس النوع. إنها واحدة من هياكل البيانات الرئيسية في لغة البرمجة سي. في هذه المقالة ، سننظر في طرق إضافة وإزالة العناصر في صفيف ج.

إضافة عناصر إلى مجموعة ج

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

# تشمل

# تشمل

كثافة العمليات الرئيسية () {

إنت *صفيف = (إنت *)مالوك(5 * سيزوف(إنت)) ؛ / / تخصيص الذاكرة لمجموعة

// ملء المصفوفة

إلى عن على (كثافة العمليات أنا = 0; أنا < 5; أنا i) {

صفيف [أنا] = أنا + 1;

}

إنت *نيوراي = (إنت *)مالوك(6 * سيزوف(إنت)) ؛ / / تخصيص الذاكرة لمجموعة جديدة

// نسخ العناصر من المصفوفة القديمة إلى المصفوفة الجديدة

إلى عن على (كثافة العمليات أنا = 0; أنا < 5; أنا i) {

نيوراي [أنا] = صفيف [أنا];

}

نيوراي [5] = 6 ؛ / / إضافة عنصر جديد إلى النهاية

مجانا (صفيف) ؛ / / تحرير ذاكرة المصفوفة القديمة

صفيف = نيوراي; // تعيين عنوان المصفوفة القديمة إلى مصفوفة جديدة

// إخراج مصفوفة بعنصر جديد

ل (إنت أنا = 0 ؛ أنا < 6 ؛ أنا {) {

برينتف ("٪د " ، صفيف [أنا]);

}

مجانا (صفيف) ؛ / / تحرير الذاكرة من مجموعة جديدة

العودة 0;

}

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

إزالة العناصر من مجموعة ج

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

# تشمل

# تشمل

كثافة العمليات الرئيسية () {

إنت *صفيف = (إنت *)مالوك(6 * سيزوف(إنت)) ؛ / / تخصيص الذاكرة لمجموعة

// ملء صفيف

ل (إنت أنا = 0 ؛ أنا < 6 ؛ أنا {) {

صفيف [أنا] = أنا + 1;

}

مؤشر كثافة العمليات = 3 ؛ / / فهرس العنصر المحذوف

// تحويل العناصر بعد العنصر المحذوف إلى موضع واحد إلى اليسار

إلى عن على (الباحث الأول = فهرس ؛ أنا < 5 ؛ أنا i) {

صفيف [أنا] = صفيف [أنا + 1];

}

صفيف = (إنت *)ريالوك(صفيف ، 5 * سيزوف (إنت)) ؛ / / تقليل حجم الصفيف من قبل واحد

// إخراج مصفوفة بدون عنصر محذوف

إلى عن على (كثافة العمليات أنا = 0; أنا < 5; أنا i) {

برينتف ("٪د " ، صفيف [أنا]);

}

مجانا (صفيف) ؛ / / تحرير ذاكرة المصفوفة

العودة 0;

}

باستخدام حلقة ، يتم إزاحة العناصر موضع واحد إلى اليسار بعد حذف العنصر. ثم ، باستخدام وظيفة ريالوك () ، يتم تغيير حجم الصفيف من قبل موقف واحد أقل. أخيرا ، يتم عرض مصفوفة بدون عنصر محذوف ويتم تحرير ذاكرة المصفوفة.

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

سؤال وجواب

ما هي مجموعة ديناميكية في ج?

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

كيف يمكنني إنشاء مجموعة ديناميكية في ج?

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