PDA

View Full Version : ارایه دوبعدی پویا به زبان c فوری



**MR**
دوشنبه 18 آبان 1388, 12:58 عصر
سلام
جناب salar cppخدمتتون عرض کنم که بنده نه تنها تو این سایت دنبال جواب سوالم گشتم بلکه خیلی از سایتهای دیگه را هم سر زدم ولی جوابم نگرفتم
سوال من اینه:
تعریف ارایه دو بعدی در c,مقدار دهی اولیه دادن به ان و نیز دسترسی به تک تک خانه های این ارایه؟

tdkhakpur
دوشنبه 18 آبان 1388, 13:58 عصر
int a[4][4]={
{1, 2,5, 7},
{12, 42,65, 17},
{32, 62,45, 27},
{15, 92,51, 70}
};
int k;
k = a[0][0];

**MR**
دوشنبه 18 آبان 1388, 15:05 عصر
سلام
ارایه پویا میخواهم نه ایستا

ali zi zeperto
دوشنبه 18 آبان 1388, 15:24 عصر
int **array = new int *[row_size];
for(int i = 0 ; i < row_size ; i++)
array[i] = new int[col_size];

**MR**
دوشنبه 18 آبان 1388, 15:32 عصر
new برای cpp . من در c با دستور mallocمشکل دارم

tdkhakpur
دوشنبه 18 آبان 1388, 17:02 عصر
int **array = (int **)malloc(row_size*4);
for(int i = 0 ; i < row_size ; i++)
array[i] = (int *) malloc(sizeof(int));

**MR**
دوشنبه 18 آبان 1388, 22:00 عصر
سلام

جناب tdkhakpur چند تا سوال دارم:

در خط اول تعریف عدد 4 برای چیه؟
و برای مقدار دهی اولیه به این ارایه دو بعدی باید چی نوشت؟
چون من به این صورت مقداردهی میکنم ولی خروجی مورد نظر را نمیگیرم


for(i=0;i<row;i++)
for(j=0;j<col;j++)
{
a[i][j]=0;
و نیز برای خواندن و چاپ کردنش ؟

tdkhakpur
سه شنبه 19 آبان 1388, 10:42 صبح
خب عدد چهار نشان دهنده اندازه يك متغيير از نوع اشاره گره كه براي دريافت حافظه براي row_size تعداد آرايه لازم هست.
مقدار دهي بصورت زير ميتواند باشد.


*array[i] = 10;

در فوق i كوچكتر از row_size بايد باشد.

**MR**
چهارشنبه 20 آبان 1388, 09:07 صبح
سلام

2 تا سوال دارم:
1- نحوه خواندن و چاپ این ارایه را کامل برام توضیح بدید
2- امکانش هست که به سطر و ستون با هم دسترسی داشته باشم
اخه من برای ضرب دو ماتریس به سطر و ستون با هم نیاز دارم مثلا

*array[i][j]=0;
البته این دستور اشکال داره

tdkhakpur
چهارشنبه 20 آبان 1388, 11:20 صبح
خوب ببينيد ميتوانيد با عمل رياضي يك آرايه تك بعدي را هم به روش دو بعدي تقاضا كنيد.مثلا
اگر طول يك سطر برابر row_size با iو j ميتوانيد بصورت زير عمل كنيد.


*array[row_size*j+i] = 10;

در فوق نبايد row_size*j+i بزرگتر از طول آرايه باشد.

**MR**
چهارشنبه 20 آبان 1388, 15:11 عصر
سوال اولم چی؟

یعنی برای دسترسی به سطر اول ستون دوم این درسته؟

*array [row_size*1+2]=5;

tdkhakpur
چهارشنبه 20 آبان 1388, 17:45 عصر
نه از صفز شروع ميشه.


*array [row_size*0+1]=5;

خوبي مشكلي برا خواندن و چاپ ندارد.


cin >>>*array [row_size*0+1];
cout<<*array [row_size*0+1];