المؤشر والمصفوفة الديناميكية
جزء من قسم Logic & Flow في رحلة C++ على Coddy — الدرس 56 من 56.
التحدي
سهلقم بإنشاء برنامج يستعرض إدارة الذاكرة الديناميكية من خلال بناء نظام مرن لتخزين ومعالجة الأرقام. سيختبر هذا التحدي فهمك للمصفوفات الديناميكية، وتخصيص الذاكرة، والتعامل مع المصفوفات، والتنظيف الصحيح للذاكرة.
سيتم توفير المدخلات التالية:
- عدد صحيح
sizeيمثل عدد الأعداد الصحيحة المراد تخزينها - ثم عدد
sizeمن الأعداد الصحيحة التي تمثل الأرقام المراد تخزينها في المصفوفة الديناميكية
يجب أن يقوم برنامجك بما يلي:
- قراءة الحجم من المدخلات
- تخصيص مصفوفة من الأعداد الصحيحة ديناميكيًا باستخدام
new[]بالحجم المحدد - قراءة الأعداد الصحيحة من المدخلات وتخزينها في المصفوفة المخصصة ديناميكيًا
- حساب مجموع كل الأرقام في المصفوفة
- إيجاد القيمة العظمى في المصفوفة
- طباعة النتائج بالتنسيق المحدد
- إلغاء تخصيص الذاكرة بشكل صحيح باستخدام
delete[]
استخدم تنسيق المخرجات الدقيق التالي:
Array size: [size]
Sum: [sum_of_all_numbers]
Maximum: [maximum_value]تذكر أن تخصيص الذاكرة الديناميكي يسمح لك بإنشاء مصفوفات يتم تحديد حجمها في وقت التشغيل بناءً على مدخلات المستخدم. استخدم new int[size] لتخصيص المصفوفة والوصول إلى العناصر باستخدام تدوين المصفوفة array[index]. بعد الانتهاء من استخدام المصفوفة، يجب عليك استدعاء delete[] array لتحرير الذاكرة المخصصة ومنع تسرب الذاكرة. توجد المصفوفة في الـ heap وستظل موجودة حتى تقوم بإلغاء تخصيصها صراحةً.
جرّب بنفسك
#include <iostream>
using namespace std;
int main() {
// قراءة حجم المصفوفة
int size;
cin >> size;
// TODO: اكتب الكود الخاص بك هنا
// 1. تخصيص مصفوفة ديناميكياً باستخدام new[]
// 2. قراءة الأعداد الصحيحة وتخزينها في المصفوفة
// 3. حساب مجموع كل الأرقام
// 4. العثور على القيمة القصوى
// 5. لا تنسَ إلغاء تخصيص الذاكرة باستخدام delete[]
// إخراج النتائج (استبدلها بالمتغيرات الفعلية)
cout << "Array size: " << size << endl;
cout << "Sum: " << /* متغير المجموع */ << endl;
cout << "Maximum: " << /* متغير القيمة القصوى */ << endl;
return 0;
}جميع دروس Logic & Flow
1المؤشرات والذاكرة
ما هو المؤشر؟معامل العنوان (Address-Of)معامل الوصول للقيمة (Dereference)المؤشرات الفارغة (Null Pointers)المؤشرات والمصفوفاتالذاكرة الديناميكية باستخدام 'new'تحرير الذاكرة باستخدام 'delete'مراجعة - تمارين على المؤشرات2المتجهات (المصفوفات الديناميكية)
مقدمة إلى std::vectorإنشاء Vectorإضافة العناصرالوصول إلى العناصرحجم الـ Vectorالتكرار باستخدام For Loopالـ Range-Based For Loopإزالة العناصرملخص - عمليات الـ Vector