الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

سؤال عن عيب المصفوفات

مغلق
بدأه السهم الناري في 25 يوليو 2003 · 10 رد · 1,111 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة اله وبركاته:

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

أريد عمل مثلا :

int a;

cin >> a;

int A[a];

طبعاً هذا غير مقبول فكيف أجد طريقة مناسبة لحل هذه المشكلة.....

اللهم علمنا ما ينفعنا وأنفعنا بما علمتنا أنك أنت العليم الحكيم

سبحان الله وبحمده سبحان الله العظيم

لاحول ولاقوة الا بالله( كنز من كنوز الجنة ).

#2

صديقي السهم الناري ...

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

و يمكن أن يحدد المستخدم حجم المصفوفه array من خلال التالي :

int a;
int B[a];
cout << "Enter the array size "
cin>> a;

for (int i=0 ; i<=a;i++)
{
B = i;
}
#3

نعم انا أريد استخدام المؤشرات pointer لانها أفضل حتى عند التمرير ولكن كيف أخل المصفوفة غير محددة السعه باستخدام المؤشرات.

من يشرح لي المصفوفة الدنميكيه بالتفصيل .فهي موضوع مهم لي فهل من مساعد.

ياليت أخوي وصديقي العزيز مثال على ذلك لو تكرمت.

وسأجرب مأعطيتني أياه وأرد عليك.

اللهم علمنا ما ينفعنا وأنفعنا بما علمتنا أنك أنت العليم الحكيم

سبحان الله وبحمده سبحان الله العظيم

لاحول ولاقوة الا بالله( كنز من كنوز الجنة ).

#4

اخى العزيز يمكن استخدام الحجز الديناميكى بدلا من الاستاتيكى هذا .

Dynamic Memory Allocation.

#5

ياليت توضح كلامك هل المقصود الحجز بالكلمة new أم قصدك غير ذلك ......

وماهو الفرق بين الحجز الدنمايكي والاستاتيكي ......

اللهم علمنا ما ينفعنا وأنفعنا بما علمتنا أنك أنت العليم الحكيم

سبحان الله وبحمده سبحان الله العظيم

لاحول ولاقوة الا بالله( كنز من كنوز الجنة ).

#6

هذه الطريقة تمكنك من حجز ديناميكي في الذاكرة ولكنها لاتنطبق الا على المصفوفة ذات البعد الواحد اما لذات البعدين فيجب ان يكون احد البعدين ثابت ,الأخر متغير

int a;
int *A;
cin >> a;
A=new int[a];

كما يجب التخلص من المكان المحجوز كما يلي

delete[] A;
اللهم انا نسألك علما نافعا ونعوذ بك من حماقة الجهلاء
#7

الله يوفقك أخ khwlani سأجرب مأعطيتني واستخدمه على طول لكن ذات البعدين مأقدر أسويها مثل كذا ........

الحد الثابت مايختلف سواء صف أو عمود كله واحد أم يختلف " أذا أردت عملها ب new فأيهما أجعله ثابت"

بارك الله فيك ............

اللهم علمنا ما ينفعنا وأنفعنا بما علمتنا أنك أنت العليم الحكيم

سبحان الله وبحمده سبحان الله العظيم

لاحول ولاقوة الا بالله( كنز من كنوز الجنة ).

#8

ليس من الظروري ان يكون القسم الأول للأسطر والثاني للأعمدة

لذلك تستطيع ان تجرب كلا الحالتين

اللهم انا نسألك علما نافعا ونعوذ بك من حماقة الجهلاء
#9

الحمدلله ضبطن معي من أحسن شيء وماشيه تمام التمام وكل هذا بفضل الله ثم بفضل أخي khwlani بارك الله فيه ونفع بعلمه وخبرته.....

ذات البعد الواحد جربتها .........الأن سأحاول أجرب ذات البعدين..........

شكرا أخي العزيز khwlani .

اللهم علمنا ما ينفعنا وأنفعنا بما علمتنا أنك أنت العليم الحكيم

سبحان الله وبحمده سبحان الله العظيم

لاحول ولاقوة الا بالله( كنز من كنوز الجنة ).

#10

على فكرة لا يمكن بناء مصفوفة ديناميكة ثنائية البعد بلغة C++ لأنه يجب تحديد البعد الثاني للمصفوفة مسبقاً

إذا أردت يمكن أن تستخدم الـ Template لبناء مصفوفات ديناميكية مثل :

vector<int> v;

هذه التقنية تتكفل بعملية الحجز الديناميكي والحذف

أيضاً يمكن إستخدام الـ

list<type> l

(f)(f)(f)(f)

#11

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

في الحقيقة شكرا لردك أخ اسماعيل ولكن في الحقيقة والواقع Template لم تشرح لي في الجامعه وهذا أنا ارجع لمراجع لكي أحاول أغطي بعض الدروس وعندي المرجع علم نفسك في 21 يوم وأظنه مشروحه في اليوم 19 ولم أصل اليها الا الان ولكن شكرا لمعلواتك القيمه التي ساستفيد منها .......

شكرا لكل من رد على السهم الناري...............وبارك الله فيه ونفع بعلمه.......(f)(f)(f)(f)

اللهم علمنا ما ينفعنا وأنفعنا بما علمتنا أنك أنت العليم الحكيم

سبحان الله وبحمده سبحان الله العظيم

لاحول ولاقوة الا بالله( كنز من كنوز الجنة ).

هذا الموضوع مغلق.

مواضيع مشابهة