PDA

View Full Version : سوال: آرایه پویا دو بعدی در c++



nimja145
پنج شنبه 24 اردیبهشت 1388, 18:52 عصر
سلام. چطور در c++ آرایه پویای دوبعدی تعریف کنم. دستور زیر برای آرایه یک بعدی کار میکنه:


int *pInt = new int[10];


ولی اگه بخوام به صورت زیر دوبعدی تعریف کنم کامپایلر ارور میده:



int *s=new int[n][n];

Keyhan Clever
پنج شنبه 24 اردیبهشت 1388, 22:59 عصر
سلام


int (*count)[5]

for(i=0;i<m;i++)
for(j=0;j<5;j++)

با سلام خدمت شما دوست عزیز.
دوست من این کار کاملا شبیه آرایه ی یک بعدی پویا است با این تفاوت که شما پس از ساخت یک آرایه ی یک بعدی پویا ، یک فور گذاشته و با هر کدام از بخش های آرایه ی ساخته شده ، بعد دوم آرایه ی مورد نظر را می سازید.

اگه یه کم جستجو میکردید پیدا میشد

Keyhan Clever
پنج شنبه 24 اردیبهشت 1388, 23:04 عصر
اصلا میگم اگه توضیح کامل میخواین :
برای توضیح بیشتر به لینک زیر هم سری بزنید :
http://barnamenevis.org/forum/archive/index.php/t-92191.html

tdkhakpur
پنج شنبه 24 اردیبهشت 1388, 23:35 عصر
سلام:
شما وقتی که با اشاره گر ها کار میکنی میتونی هر ویرایش روش انجام بدی خوب میتونی دو روش زیر رو بکار ببری.
موفق باشید.


int **s;
s=(int **)new int[10][10];


int **s;
s=(int **)new int[10*10];

tdkhakpur
جمعه 25 اردیبهشت 1388, 04:45 صبح
سلام:

اما فکر می کنم توی compilerرای قدیمی مشکلی نداشته باشه

گذری عبور کردیم. دوستومون اون بالا خیلی دوست داره مطالعات درسیشو پیاده کنه.
من برنامه نویسی رو خیلی وقته شروع کردم یه 10 12 سالی میشه باید گه کهنه شده.
عزیز من - یه اشاره گر مفهموش یعنی نشان دادن محلی از حافظه این کدها رو یه نگاهی بکن تا به اطلاعات عمومیت اضافه بشه و هیچ وقت یادت نره حافظه ای رو که از سیستم گرفتی بهش برگردونی ها.:تشویق:


long *lPtr, n;
n = 5;
(void*)lPtr = (void*) new char[n];
for( int i=0; i<n; i++, lPtr[i]=i, lPtr[i]+=i);
for( int i=0; i<n; i++, cout<<" "<<lPtr[i]);
delete [] lPtr;

star_rh
سه شنبه 17 آبان 1390, 17:42 عصر
سلام.راحترین روش برای ایجاد آرایه دوبعدی پویا در C++‎ به این شکل است:

#include <iostream>
#include <conio>

void main()
{
int **a=new int*[10];

for(int i=0;i<10;i++)
a[i]=new int[10];

for(int i=0;i<10;i++)
for(int j=0;j<10;j++)
a[i][j]=(i+1)*(j+1);

for(int i=0;i<10;i++)
{
for(int j=0;j<10;j++)
cout<<a[i][j]<<'\t';
cout<<endl;
}
getch();
}

majid_98
جمعه 09 دی 1390, 13:19 عصر
این که شبیه جدول ضربه!
تازه چند بار متغیر i رو تعریف کردی 1بار کافی بود

Cancer
جمعه 09 دی 1390, 17:45 عصر
سلام سلام سلام
من قبلاً با اشاره گرها آرایه دو بعدی پویا ایجاد کردم.
حالا اگه یادم بیاد
فکر کنم این طوری بود:

int *p = new int[10,10]

خدا کنه درست یادم اومده باشه.
فقط مطمئنم که به همین سادگی بود.
نمی خواست کاره دیگه انجام بدی.

تشکر.

shahmohammadi
یک شنبه 11 دی 1390, 00:47 صبح
سلام به همه.

سلام سلام سلام
من قبلاً با اشاره گرها آرایه دو بعدی پویا ایجاد کردم.
حالا اگه یادم بیاد
فکر کنم این طوری بود:

int *p = new int[10,10]

خدا کنه درست یادم اومده باشه.
فقط مطمئنم که به همین سادگی بود.
نمی خواست کاره دیگه انجام بدی.

تشکر.
*p يعني يه بعدي. شايد منظورتون هموني هست كه توي ساختمان داده خونده بوديم:
int *ary = new int[sizeX*sizeY];
تو اين روش به جاي عبارت ساده ي ary[i][j] عبارت زير رو بايد بنويسم كه اصلا هم ساده تر از قبلي نيست:
ary[i*sizeY+j]
ساده ترين روشش همون روشي هست كه دوستمون star_rh (http://barnamenevis.org/member.php?155448-star_rh) گفتن. آزاد كردن حافظه تو روش ايشون هم به صورت زير هست:
for(int i = 0; i < Y; ++i) {
delete [] ary[i];
}
delete [] ary;