Problem

1/1

المصفوفة الديناميكية: ابدأ

Theory Click to read/hide

المصفوفات الديناميكية
في الدورات السابقة على المصفوفات ، درسنا إنشاء مصفوفة مثل هذا:
نبسب ؛
const int Nmax = 1000 ؛ int A [Nmax] ؛ أو نبسب ؛ هذا: intA [1000] ؛
تنشئ هذه الطريقة مصفوفة ثابتة . عيب واحد هو أن حجم ونوع عناصر المصفوفة لا يمكن تغييرهما أثناء تشغيل البرنامج. & nbsp؛
في المثال أعلاه ، تم إنشاء مصفوفة ثابتة من 1000 عنصر. أي مساحة مخصصة في الذاكرة لتخزين 1000 عنصر من النوع & nbsp؛ int (مصفوفة من 1000 عنصر من النوع & nbsp؛ int ). يتم تخزين عنوان بداية المصفوفة في المتغير & nbsp؛ A . إذا كنت بحاجة إلى معالجة مجموعة من أكثر من 1000 عنصر ، فسيتعين عليك تغيير الوصف وإعادة تجميع البرنامج مرة أخرى. عند العمل مع مصفوفات صغيرة ، سيتم إهدار معظم الذاكرة المخصصة لمصفوفة ثابتة.

من أجل الاستخدام الفعال لذاكرة الكمبيوتر ، من الضروري تخصيصها ديناميكيًا. بمعنى آخر ، يجب تخصيص ذاكرة للكائنات أثناء تنفيذ البرنامج حسب الحاجة (إنشاء كائنات جديدة).

في C ++ ، تم تصميم عمليات & nbsp؛ new & nbsp؛ and & nbsp؛ حذف & nbsp؛ لتخصيص ذاكرة الكمبيوتر ديناميكيًا. & nbsp؛ عملية & nbsp؛ new & nbsp؛ يخصص الذاكرة من منطقة الذاكرة الخالية ، وتقوم العملية & nbsp؛ حذف & nbsp؛ بإلغاء تخصيص الذاكرة المخصصة. & nbsp؛
نبسب ؛
مثال على إنشاء متغير ديناميكي وحذفه int * A = int جديد ؛ // إنشاء كائن من النوع int * أ = 15 ؛ // يحدث تهيئة الكائن من خلال مؤشر (*) // يمكن أن تتم التهيئة على الفور // عند التصريح عن كائن ديناميكي int * B = new int (25) ؛ كوت & lt؛ & lt؛ * A & lt؛ & lt؛ & quot؛ & quot؛ & lt؛ & lt؛ *ب؛ // قيمة الإخراج بالمؤشر حذف أ ؛ // تحرير الذاكرة المخصصة حذف B؛ تقوم العملية & nbsp؛ new & nbsp؛ بإنشاء كائن من النوع المحدد ، وتخصيص ذاكرة له ، وإرجاع مؤشر من النوع الصحيح إلى موقع الذاكرة المحدد. إذا تعذر تخصيص الذاكرة ، على سبيل المثال ، إذا لم تكن هناك مناطق خالية ، فسيتم إرجاع مؤشر فارغ ، أي سيعيد المؤشر القيمة 0. تخصيص الذاكرة ممكن لأي نوع بيانات: & nbsp؛ int ، & nbsp؛ تعويم ، مزدوج ، & nbsp؛ char & nbsp؛ إلخ.

بنفس الطريقة ، في C ++ ، يمكنك إنشاء مصفوفة ديناميكية تستخدم & nbsp ؛ تخصيص الذاكرة الديناميكي. حجم هذه المصفوفة ، والذي يمكن استخدامه أثناء تشغيل البرنامج ، على سبيل المثال ، من لوحة المفاتيح. لإنشاء متغيرات ديناميكية.
نبسب ؛
في بناء جملة C
إنتن. scanf (& quot؛٪ d & quot ؛، & amp؛ N) ؛ int * mas = malloc (sizeof (int) * N) ؛ // لاحقًا لتغيير حجم المصفوفة // المستخدمة بواسطة realloc . ... مجاني (ماس) ؛ // الافراج عن الذاكرة المخصصة
في بناء جملة C ++
إنتن. سينما & GT ؛ & GT. ن؛ int * A = new int [N] ؛ // لتغيير حجم المصفوفة ، يمكنك ذلك // نقل البيانات إلى مصفوفة أخرى ، وامسح القديم ... حذف [] mas ؛ // الافراج عن الذاكرة المخصصة تشير الأقواس المربعة إلى // أننا نحرر الذاكرة من تحت المصفوفة

Problem

يتم إعطاؤك سلسلة من الأعداد الصحيحة. اكتب برنامجًا يقوم بإنشاء مصفوفة وكتابة تسلسل إليه مرتين على التوالي.
& nbsp؛
إدخال & nbsp؛
أول رقم معين N & [مدش]؛ عدد العناصر في التسلسل (1 & lt ؛ = N & lt ؛ = 100). ثم يتم كتابة أرقام N مفصولة بمسافة.
& nbsp؛
الإخراج & nbsp؛
من الضروري إخراج مصفوفة تتكون من تسلسل مكرر. نبسب ؛
أمثلة <الجسم>
# إدخال الإخراج
1 3
1 2 3
1 2 3 1 2 3