اذهب إلى المحتوى

السؤال

Recommended Posts

  • 0
نشر

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

اقتباس

خطوات إنشاء مصفوفة ديناميكية ثنائية الأبعاد باستخدام C++.

لتخصيص الذاكرة ديناميكياً نستخدام الدالة malloc أو calloc (وهاتين الدالتين أصلهما لغة السي) أو المؤثر new (وهذا ماسنستخدمه الآن لحجز الذاكرة -الخيار المستحسن-). الآن لإنشاء مصفوفة ديناميكية ثنائية البعد نقوم أولاً بالإعلان عن متغير مؤشر ل مؤشر أي بمعنى:

data type **pointer-variable;

سنجعل صنف البيانات هو int وسيكون اسم المتغير arr إذاً سنكتب:

int** arr;

الآن نقوم بحجز ذاكرة لصف أو سطر (row) سيحتفظ بمرجع للعمود column أي:

arr = new int*[row];

ثم نقوم بتخصيص مساحة للأعمدة باستخدام المؤثر new في كل خلية صف والتي ستحتوي على القيم الفعلية لعناصر المصفوفة أي بمعنى:

arr[i] = new int[col];

الكلام السابق يوضحه المخطط التالي:

Untitled.png.d3438e106d42477301b49b49396f1f6c.png

والكود التالي هو تحقيق لما سبق:

#include <iostream>
using namespace std;
int main()
{
    // نقوم بتعريف المؤشر للمؤشر
    int** array;
    // نقوم بتعريف متغيرين يمثلان عدد الأسطر والأعمدة المطلوبين
    int row, col, i, j;
    // نطلب إدخالهما من المستخدم
    cin >> row;
    cin >> col;
    // حجز ديناميكي للصف
    array = new int*[row];
    // حجز ديناميكي للعمود
    for(i=0; i<row; i++){
        array[i] = new int[col];
    } 
    //إدخال عناصر المصفوفة
    for(i=0; i<row; i++){
        for(j=0; j<col; j++){
            cin >> array[i][j];
        }
    }
    // تحرير الذاكرة بعد الانتهاء من استخدام المصوفة
    delete [] array;
}

لطباعة عناصر المصفوفة يمكنك استخدام الدالة التالية:

void display(int** a, int r, int c){
    for(int i=0; i<r; i++){
        for(int j=0; j<c; j++){
            cout << a[i][j] << ' ';
        }
        cout << endl;
    }
}

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
الآن بالنسبة لمسألتك فيمكنك إتمامها من خلال تعريف مصفوفة ديناميكية كما في المثال السابق لكن يجب أن تكون عناصرها struct أو class يحتوي ال Product information.
 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...