ملخص: المصفوفة الديناميكية
جزء من قسم Logic & Flow في رحلة C على Coddy — الدرس 37 من 63.
التحدي
سهلاكتب برنامجاً بلغة C يقوم بإنشاء مصفوفة ديناميكية بناءً على مدخلات المستخدم، ومعالجة البيانات، وإظهار الإدارة السليمة للذاكرة. يجب على برنامجك القيام بما يلي:
- قراءة عدد صحيح
nمن المستخدم يمثل عدد العناصر المراد تخزينها - استخدام
malloc()معsizeof()لتخصيص ذاكرة ديناميكياً لمصفوفة مكونة منnمن الأعداد الصحيحة - التحقق مما إذا كان تخصيص الذاكرة ناجحاً - إذا فشل، قم بطباعة
Memory allocation failed!وإنهاء البرنامج - إذا نجح التخصيص، قم بطباعة
Array of size [n] created successfully! - قراءة
nمن القيم الصحيحة من المستخدم وتخزينها في المصفوفة المخصصة - حساب وطباعة مجموع كل العناصر بالتنسيق التالي:
Sum: [value] - إيجاد وطباعة القيمة الصغرى بالتنسيق التالي:
Minimum: [value] - عد العناصر التي تزيد قيمتها عن المتوسط وطباعتها بالتنسيق التالي:
Elements above average: [count] - طباعة إجمالي الذاكرة المستخدمة بالبايت بالتنسيق التالي:
Memory used: [bytes] bytes - استخدام
free()لإلغاء تخصيص الذاكرة - طباعة
Memory successfully freed!لتأكيد عملية التنظيف الصحيحة
تذكر تضمين الترويسة <stdlib.h> لاستخدام malloc() و free(). يختبر هذا التحدي فهمك الكامل لإدارة الذاكرة الديناميكية، بدءاً من التخصيص مروراً بالاستخدام وصولاً إلى التنظيف السليم.
على سبيل المثال، إذا كانت المدخلات هي:
5
12 8 15 3 20يجب أن تكون المخرجات:
Array of size 5 created successfully!
Sum: 58
Minimum: 3
Elements above average: 2
Memory used: 20 bytes
Memory successfully freed!يوضح هذا التحدي الشامل دورة الحياة الكاملة لإدارة الذاكرة الديناميكية مع إجراء عمليات معالجة بيانات ذات مغزى على المصفوفة المخصصة.
جرّب بنفسك
#include <stdio.h>
#include <stdlib.h>
int main() {
// قراءة عدد العناصر
int n;
scanf("%d", &n);
// TODO: اكتب الكود الخاص بك أدناه
// 1. تخصيص ذاكرة لـ n من الأعداد الصحيحة باستخدام malloc()
// 2. التحقق مما إذا كان التخصيص ناجحاً
// 3. قراءة n من الأعداد الصحيحة في المصفوفة
// 4. حساب المجموع، وإيجاد الحد الأدنى، وعد العناصر التي تزيد عن المتوسط
// 5. طباعة النتائج وتحرير الذاكرة
return 0;
}جميع دروس Logic & Flow
1أساسيات المؤشرات
ما هو المؤشر؟الإعلان عن المؤشراتعامل العنوان (&)عامل إلغاء المرجعية (*)مؤشرات NULLمراجعة: أساسيات المؤشرات4مشروع: أداة نصوص بسيطة
نظرة عامة على المشروععد الأحرف2المؤشرات والمصفوفات
أسماء المصفوفات كمؤشراتعناصر المصفوفة - المؤشراتالعمليات الحسابية على المؤشراتمقارنة المؤشراتمراجعة: التنقل في المصفوفة باستخدام المؤشرات5المؤشرات والدوال
التمرير بالقيمةتمرير المؤشرات إلى الدوالتعديل المتغيرات عبر المؤشراتمثال كلاسيكي: التبديلتمرير المصفوفات إلى الدوالملخص: وسائط المؤشرات في الدوال8الهياكل والمؤشرات
المؤشرات إلى الهياكلعامل السهم (->)تمرير الهياكل بالقيمةتمرير مؤشرات الهياكلالتخصيص الديناميكي للهياكلمراجعة: تعديل الهياكل باستخدام المؤشرات11تحديات المراجعة النهائية
مراجعة: دمج السلاسل النصية الديناميكيمراجعة: مصفوفة من الـ Structsمراجعة: عداد تكرار الكلمات3مصفوفات الأحرف والسلاسل النصية
السلاسل النصية كمصفوفات charالمُنهي الصفري (Null Terminator)إدخال السلاسل النصية باستخدام scanfاستخدام strlen()استخدام strcpy()استخدام strcat()استخدام strcmp()مراجعة: دوال السلاسل النصية الأساسية6إدارة الذاكرة
ذاكرة Stack مقابل Heapالتخصيص الديناميكي - malloc()استخدام sizeof() للتخصيصالتحقق من فشل التخصيصتحرير الذاكرة باستخدام free()التخصيص باستخدام calloc()ملخص: المصفوفة الديناميكية