PDA

View Full Version : اشکال کوچولو



پرنده کوچک
یک شنبه 19 بهمن 1382, 00:58 صبح
سلام.
:D
لطفا یکی به من بگه چطور میشه آرایه دو بعدی پویا با استفاده از new ساخت.
زیرا از این error میگیره.
p=(in**)new int
pاشاره گر دو بعدی است.

Anti_Evil
یک شنبه 19 بهمن 1382, 05:00 صبح
با سلام،

راه های متعددی وجود دارد که بهترین روش اشاره گر به اشاره گر است:


// Our fucking two-dimension array ...

int **Arr2d;
Arr2d = new int*[2];

Arr2d[0] = new int[5];
Arr2d[1] = new int[5];

آرایه بالا دارای 2 سطر و 5 ستون میباشد.
فکر میکنم کد واضح است، چنانچه مشکلی داشتی راحت مطرح کن ;)

موفق باشید.

پرنده کوچک
یک شنبه 19 بهمن 1382, 08:05 صبح
سلام.
جناب Anti_Evil من میخوام آرایه پویا باشه.یعنی ابعاد آرایه که چند در چند باشد را باید کاربر تعیین کند .ولی با این روشی که شما گفتید ابعاد آرایه مشخص است و نمیتوان آنرا از ورودی گرفت.
در ضمن کامنتی را که نوشتید یک بار نگاه کنید.فکر کنم اشتباه تایپی داره. :oops:
ممنون.

Anti_Evil
یک شنبه 19 بهمن 1382, 13:37 عصر
این روش به شما امکان میدهد ابعاد آن را هر چقدر که میخواهید در طول برنامه تعیین کنید.
احتمالا شما کد را خوب ملاحظه نکردید ...

در مثال زیر فرض بر آن است که nRow و nCol از ورودی دریافت شده اند:


// the second fucking two-dimension array sample ...

int **Arr2d;

Arr2d = new int*[nRow];

Arr2d[0] = new int[nCol];
Arr2d[1] = new int[nCol];

اگر منظور شما از ایجاد آرایه ای پویا آرایه ای است که ابعاد آن در طول برنامه تغییر کند پیشنهاد میکنم از vector استفاده کنید.

خوش باشید.

Inprise
یک شنبه 19 بهمن 1382, 13:49 عصر
:?:

چه اصراری داری اون کلمهء کذائی رو که با قوانین سایت هم متناقضه در متن و خطوط مختلف کدهات درج کنی ؟ اگر فردا کس دیگری هم این حرکت رو انجام داد ، نمیشه باهاش برخورد مناسبی کرد چون میتونه رفتارش رو ارجاع بده به رفتار نسنجیده یکی از مدیران که باهاش برخورد نشده ! به عنوان مدیر و یکی از اعضای فعال سایت باید بیشتر مراعات کنی .

Anti_Evil
یک شنبه 19 بهمن 1382, 18:35 عصر
دفاعی ندارم ... تسلیم رای دوستان هستم.
اگر بازتاب این مسئله آن قدر گسترده بوده که باعث آزرده خاطر شما دوستان شده از نوشتن اینگونه کلمات خودداری میکنم.

البته این عادت من هستش که برای برنامه های تست و کوچیک اینجوری comment بزارم و مختص به اینجا نیست ;)
تا به حال پیغامی در این مورد دریافت نکرده بودم وگرنه خیلی زودتر اقدام میکردم.

در اینگونه موارد استفاده از PM برای تذکر دادن مناسب تر میباشد.

در هر حال تصمیم من همان است که گفتم.

خوش باشی.

Inprise
یک شنبه 19 بهمن 1382, 20:26 عصر
نه . بازتاب گسترده ای نداشت . همونطور که گفتم رفتار یک مدیر اغلب نشان دهنده خط مشی سایت و مشخص کننده رفتارهای مقبول و غیر مقبوله . شاید خود من هم در محیطهای خصوصی تر فرد مبادی ادبی نباشم اما بهر حال باید تحفظات محیطهای عمومی مثل اینجا را رعایت کرد . راستی ! مطلب قبلی من صرفا" یک تذکر از روی خیرخواهی در عالم رفاقت بود نه چیزی بیشتر .

خوش باشی :)

Anti_Evil
یک شنبه 19 بهمن 1382, 23:52 عصر
راستی ! مطلب قبلی من صرفا" یک تذکر از روی خیرخواهی در عالم رفاقت بود نه چیزی بیشتر.

انشاالله که همینطور است ;)

پرنده کوچک
چهارشنبه 22 بهمن 1382, 01:35 صبح
باز هم سلام.
اون روشی که شما میفرمایید آرایه را با دو ستون ،و سطر دلخواه تعریف میکند.
یعنی اگر این خط را هم به تکه برنامه اضافه کنیم آرایه با سه ستون تعریف میشود
Arr2d[2] = new int[nCol]
بنابراین هنوز گرفتن ستون از کاربر بی معنی است .
برای اطمینان جنابعالی ، خودتان میتوانید روی کامپایلر و نه کاغذ امتحان کنید البته syntax error در کار نیست ودر زمان اجرا هنگام گرفتن عناصر سطر سوم از ورودی پیغام میدهد: access violation
اگر هم خواستید برنامه ضمیمه را اجرا کنید تا متوجه شوید.
مرسی

Anti_Evil
چهارشنبه 22 بهمن 1382, 02:11 صبح
شما در فهم مطالب دچار اشکال شدید، پیشنهاد میکنم دوباره مطالعه کنید.
این جزو امکانات اشاره گر هاست که به برنامه نویس اجازه دهد آرایه هایی با سطر و ستون های دلخواه بسازد ...
در ضمن در آن مثال من فقط روش را معرفی کردم، قرار نیست برنامه شما را بنویسم ;)
البته فکر میکنم کل راه هم با همان مثال حل شده باشد.

mascom
دوشنبه 07 شهریور 1384, 00:55 صبح
سلام.
:D
لطفا یکی به من بگه چطور میشه آرایه دو بعدی پویا با استفاده از new ساخت.
زیرا از این error میگیره.
p=(in**)new int
pاشاره گر دو بعدی است.
میتونی یه ساختار تعریف کنی که دو فیلد از نوع داده مورد نظرت رو داشته باشه.

aakh1361
دوشنبه 07 شهریور 1384, 02:45 صبح
p = (int **) new int [XX][YY]