السلام عليكم ورحمة الله وبركاته
أريد أن أعرف مصفوفة يكون حجمها متغير كما هو في الدوت نت فكيف السبيل الي ذلك
dynamic array using standard c++
السلام عليكم ورحمة الله وبركاته
أريد أن أعرف مصفوفة يكون حجمها متغير كما هو في الدوت نت فكيف السبيل الي ذلك
dynamic array using standard c++
stackoverflow profile : http://stackoverflow.com/users/249120/ahmed-safan
Just Keep Moving On , never stop until you are dead
أخوي هذي تسويها بحاجه اسمها اللينكد ليست
linked list
وبالعربي اسمها القوائم المترابطة .. او اللوائح المترابطه
وهي ليست مصفوفه .. انما شبيهه بعمل المصفوفه
تحياتي لك وان شاء الله اكون أفدتك
شكراً علي الرد
أخي الكريم لقد لخصت الأمر بدرجة جعلتني غير مستفيد
هلا وضحت الأمر
stackoverflow profile : http://stackoverflow.com/users/249120/ahmed-safan
Just Keep Moving On , never stop until you are dead
بإمكانك استخدام ال pointers :
مثلاً :
int size; cin>>size; int *array=new int[size];
اصبح عندك مصفوفة المستخدم يحدد حجمها وتعاملها كالمصفوفة مباشرة
باستخدام الـ index مثل
array[2];
تحياتي لك
أخي ماتريكس اظن ان الاخ ابو هاشم يريد من المستخدم ان يحدد حجم المصفوفه اليس كذلك ؟
اذا كان كذلك
فيجب عليك استخدام اسلوب برمجي يسمى اللينكد ليست .. linked list .. او بما يسمى القوائم المترابطة
هذي وظيفتها ان المستخدم يقوم بادخال ما يرد الى ان تمتليء ذاكره جهازه .. تخيل معي ذلك
ولكي تشاهد برنامج مكتوب بهذا الاسلوب حمل المرفقات
طبعا تجد طريقتين تعمل بهذا الاسلوبهما هم اللى اعرفهم يمكن فيه غيرهم
هذه الطريقتين هي SNGLNK linked list duoble linked list
تحياتي لك
تحياتي لك
أخي ماتريكس اظن ان الاخ ابو هاشم يريد من المستخدم ان يحدد حجم المصفوفه اليس كذلك ؟
اذا كان كذلك
فيجب عليك استخدام اسلوب برمجي يسمى اللينكد ليست .. linked list .. او بما يسمى القوائم المترابطة
هذي وظيفتها ان المستخدم يقوم بادخال ما يرد الى ان تمتليء ذاكره جهازه .. تخيل معي ذلك
ولكي تشاهد برنامج مكتوب بهذا الاسلوب حمل المرفقات
طبعا تجد طريقتين تعمل بهذا الاسلوبهما هم اللى اعرفهم يمكن فيه غيرهم
هذه الطريقتين هي SNGLNK linked list duoble linked list
تحياتي لك
تحياتي لك
أخي ماتريكس اظن ان الاخ ابو هاشم يريد من المستخدم ان يحدد حجم المصفوفه اليس كذلك ؟
اذا كان كذلك
فيجب عليك استخدام اسلوب برمجي يسمى اللينكد ليست .. linked list .. او بما يسمى القوائم المترابطة
هذي وظيفتها ان المستخدم يقوم بادخال ما يرد الى ان تمتليء ذاكره جهازه .. تخيل معي ذلك
ولكي تشاهد برنامج مكتوب بهذا الاسلوب حمل المرفقات
طبعا تجد طريقتين تعمل بهذا الاسلوبهما هم اللى اعرفهم يمكن فيه غيرهم
هذه الطريقتين هي SNGLNK linked list duoble linked list
تحياتي لك
شكراً إخواني علي الرد
وبالفعل أنا أريد من المستخدم أن يحدد حجم الصفوفة (عدد عناصرها)
لكن الكود بالمرفقات طويل شويه ياحبذا لو تشرح الفكرة
تم تعديل هذه المشاركة بواسطة أبو هاشم المصري في 17 مايو 2007 في 18:43
stackoverflow profile : http://stackoverflow.com/users/249120/ahmed-safan
Just Keep Moving On , never stop until you are dead
int length; cout << "please enter length" << endl; cin >> length; int* array = new type[length];
قم بتغيير كلمة type بنوع البيانات الذي تريده (int, char الخ)
و بعد ذلك يمكنك ان تستدعي المصفوفة بشكل طبيعي
array[index]
تم تعديل هذه المشاركة بواسطة Visual Code في 17 مايو 2007 في 19:07
السلام عليكم ,,
الأخوة ذكروا طريقتين للتعامل مع الذاكرة ,, Pointers , Linked List
طبعاً في Pointers لن تستطيع تغيير حجم المصفوفة بعد تعريفها ,, أي أنه إذا أدخل المستخدم 3 فلن تستطيع تغيير حجم المصفوفة بعد ذلك إلى 4 ,,
على العكس Linked List تعطيك مرونة جيدة في التعامل مع حجم المصفوفة بحيث يكون عدد العناصر غير ثابت و يمكن إضافة و حذف العناصر من القائمة ,,
تحياتي ,,
تم تعديل هذه المشاركة بواسطة Khaled.Alshaya في 18 مايو 2007 في 01:36
int arr[]={'0','1'};
int i;
for(i=0;i<10;i++)
{
printf("in");
arr=getch();
}
for(i=0;i<10;i++)
{
printf("\n%i",arr);
}
getch();ملاحظة:
يجب اسناد علي الاقل قيمة في تعريف المصفوفة مثل
int arr[]={'0'};
يتم زيادة حجم المصفوفة دون تدخل المستخدم
فكرة عملها :
فكرتها بسيطة بحيث يتم جز المصفوفة بحجم معين مثلا 5 خانات ثم بعد ذلك يتم زيادة 5 خانات في كل مرة تحتاج لتوسيع المصفوفة
اخي ... بأمكانك استعمال الامر - الداله
Realloc
اذا كنت مصر على استخدام مصفوفه
وشكرا
Writen By: Admirer4 , B.Sc Student of EE.
ِCowards die many times before their death
شكراً جزيلاً لكم جميعاً علي الرد ولكن لا أحب أن أري كلمة مثل بأمكانك استعمال الامر - الداله
Realloc
لأنها لا تفيد كثيراً ولا قليلاً وشكراً للجميع علي التجاوب
stackoverflow profile : http://stackoverflow.com/users/249120/ahmed-safan
Just Keep Moving On , never stop until you are dead
احبائى المبرمجين
السلام عليكم
اخى الكريم - خذ هذا الحل السريع - وارح نفسك من عناء التفكير - مع العلم ان الحل ليس مثالى - حيث ان يستهلك ذاكرة محددة وثابتة
ولكنه حل عملى مع امكانيات العتاد المتوفرة - وصغر حجم الذاكرة المطلوب
قم بانشاء مصفوفةArray ذات عدد كبير من العناصر - الحد الاقصى الذى تتصوره - وليكن 2048 على سبيل المثال
قم بانشاء متغير Variable - يشتمل على رقم اقصى عنصر تم استخدامه من المصفوفة
قم بوضع المصفوفة والمتغير معا فى Struct - ليمثل نوع بيانات جديد New Data Type
وقم بكتابة الدوال الازمة للتعامل مع هذا السيناريو
مميزات هذا الاسلوب
1 - المساحة المطلوبة من الذاكرة يمكن حسابها
2 - سهل التعامل مع عدد العناصر المستخدم
عيوبه
1 - الحد الاقصى اذا لم يحدد بدقة تعتبر مصيبة
مع تحياتى
محمود فايد
السلام عليكم
اذا كنت تريد المصفوفة المتغيرة الحجم في لغة C فمثل ما تفضل الاخوان الامثل استخدام القوائم المرتبطة LinkListed
اما اذا كنت تريد البرمجة بلغة ++C فالحل الامثل استخدم المكتبات STL وتحديد المتجهات vector
وصيغة الامر كالتالي
#include <vector> vector<int> myvector;
عندما تحتاج لاضافة عنصر للمصفوفة استخدم الامر التالي
int i =10; myvector.push_back( i );
و يمكنك الحذف و الاضافة قدر ماتشاء مميزات مذهله و ديناميكية :)
تحياتي
هذا الموضوع مغلق.