PDA

View Full Version : سوال: ارایه دوبعدی پویا و اشاره گر



*Fatemeh*
چهارشنبه 29 بهمن 1393, 12:23 عصر
سلام
به نظرتون میشه یه ارایه دوبعدی پویا روبااشاره گرهابه این صورت تعریف کرد؟؟



float*p=new float [20][20]l


for (int i=0;i<20;i++ )l
for (int j=0;j<20;j++ )l
cin>>p[i][j]l



اصلا من ارایه ی پویا تعریف کردم؟؟یا فقط یه فضابه اشاره گر تخصیص دادم

منون میشم اگه زود کمکم کنید

rahnema1
چهارشنبه 29 بهمن 1393, 19:10 عصر
سلام
اون شکلی که شما نوشتید در c++11 میشه نوشت

auto p= new float[20][20];
//...
delete[] p;

اما اینجور هم نوشته میشه

#include <iostream>
using namespace std;
int main()
{
float** p = new float* [20];
for (int i = 0; i < 20; i++)
p[i] = new float [20];

for (int i = 0; i < 20; i++)
for (int j = 0; j < 20; j++ )
cin >> p[i][j];
for (int i = 0; i < 20; i++)
delete[] p[i];
delete[] p;
return 0;
}

ضمنا از vector هم میتونید استفاده کنید

*Fatemeh*
پنج شنبه 30 بهمن 1393, 17:42 عصر
خیلی ممنون
ولی یه سوال
vector هم یک ساختار مثل struct ها؟ ا:متفکر:

rahnema1
پنج شنبه 30 بهمن 1393, 18:46 عصر
خیلی ممنون
ولی یه سوال
vector هم یک ساختار مثل struct ها؟ ا:متفکر:

بله vector یک کلاسه که به صورت template هست. به این شرح که ما می تونیم وکتور از نوع int یا double یا ... درست کنیم
امکان این را داره که بهش عضو اضافه بشه یا ازش حذف بشه. مانند آرایه پویا دیگه لازم نیست delete کنیم و خصوصیات دیگه
فکر کنم چند جا در همین سایت در مورد vector توضیح داده شده. سایتهای دیگه هم هست

*Fatemeh*
شنبه 02 اسفند 1393, 12:38 عصر
خیلی ممنون از راهنماییتون

ولی یه چیزی به نظرم اشتباهه و اون اینکه وقتی میگیم ارایه پویاست یعنی در زمان اجرا مقدار میگیره پس موقع کدنویسی نباید مقداری مثل 20 بگیره
float** p = new float* [m];

خودمم تازه فهمیدم!!!!!!:لبخند:

rahnema1
شنبه 02 اسفند 1393, 12:56 عصر
آره دیگه مثلا اینجوری

#include <iostream>
using namespace std;
int main()
{
int n;
cout << "please enter size of array: ";
cin >> n;
int* array = new int[n];
//....
}

*Fatemeh*
شنبه 02 اسفند 1393, 13:01 عصر
بله دقیقا:لبخندساده:

pdaneshjoo
دوشنبه 04 آذر 1398, 23:21 عصر
سلام
اگر دو بعد آن آرایه متفاوت باشند چکار باید کرد؟ مثلا m و n


آره دیگه مثلا اینجوری

#include <iostream>
using namespace std;
int main()
{
int n;
cout << "please enter size of array: ";
cin >> n;
int* array = new int[n];
//....
}

ایلیا آخوندزاده
سه شنبه 05 آذر 1398, 23:59 عصر
سلام
اگر دو بعد آن آرایه متفاوت باشند چکار باید کرد؟ مثلا m و n

درود
اگه آرایه دو بعدی مد نظر باشه حتی اگه ابعاد مقادیر یکسان داشته باشه بازم m و n در نظر گرفته میشه و نحوه تعریف این شکلی میشه :

int** ary = new int*[N];
for(int i = 0; i < N; ++i)
ary[i] = new int[M];

که بالا مثال آورده شده بود اما این حالت کلی فرمولی هستش