سلام. چطور در C++ آرایه پویای دوبعدی تعریف کنم. دستور زیر برای آرایه یک بعدی کار میکنه:
int *pInt = new int[10];
ولی اگه بخوام به صورت زیر دوبعدی تعریف کنم کامپایلر ارور میده:
int *s=new int[n][n];
Printable View
سلام. چطور در C++ آرایه پویای دوبعدی تعریف کنم. دستور زیر برای آرایه یک بعدی کار میکنه:
int *pInt = new int[10];
ولی اگه بخوام به صورت زیر دوبعدی تعریف کنم کامپایلر ارور میده:
int *s=new int[n][n];
سلام
int (*count)[5]
for(i=0;i<m;i++)
for(j=0;j<5;j++)
با سلام خدمت شما دوست عزیز.
دوست من این کار کاملا شبیه آرایه ی یک بعدی پویا است با این تفاوت که شما پس از ساخت یک آرایه ی یک بعدی پویا ، یک فور گذاشته و با هر کدام از بخش های آرایه ی ساخته شده ، بعد دوم آرایه ی مورد نظر را می سازید.
اگه یه کم جستجو میکردید پیدا میشد
اصلا میگم اگه توضیح کامل میخواین :
برای توضیح بیشتر به لینک زیر هم سری بزنید :
https://barnamenevis.org/archiv...p/t-92191.html
سلام:
شما وقتی که با اشاره گر ها کار میکنی میتونی هر ویرایش روش انجام بدی خوب میتونی دو روش زیر رو بکار ببری.
موفق باشید.
int **s;
s=(int **)new int[10][10];
int **s;
s=(int **)new int[10*10];
سلام:
گذری عبور کردیم. دوستومون اون بالا خیلی دوست داره مطالعات درسیشو پیاده کنه.نقل قول:
اما فکر می کنم توی 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;
سلام.راحترین روش برای ایجاد آرایه دوبعدی پویا در 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();
}
این که شبیه جدول ضربه!
تازه چند بار متغیر i رو تعریف کردی 1بار کافی بود
سلام سلام سلام
من قبلاً با اشاره گرها آرایه دو بعدی پویا ایجاد کردم.
حالا اگه یادم بیاد
فکر کنم این طوری بود:
int *p = new int[10,10]
خدا کنه درست یادم اومده باشه.
فقط مطمئنم که به همین سادگی بود.
نمی خواست کاره دیگه انجام بدی.
تشکر.
سلام به همه.
*p يعني يه بعدي. شايد منظورتون هموني هست كه توي ساختمان داده خونده بوديم:
int *ary = new int[sizeX*sizeY];
تو اين روش به جاي عبارت ساده ي ary[i][j] عبارت زير رو بايد بنويسم كه اصلا هم ساده تر از قبلي نيست:
ary[i*sizeY+j]
ساده ترين روشش همون روشي هست كه دوستمون star_rh گفتن. آزاد كردن حافظه تو روش ايشون هم به صورت زير هست:
for(int i = 0; i < Y; ++i) {
delete [] ary[i];
}
delete [] ary;