View Full Version : سوال: ارایه پویا
vahid_xml
سه شنبه 24 اسفند 1389, 08:19 صبح
سلام
من چه طور ميتونم اندازه سطر و ستون ارايه دوبعدي رو از کاربر بگيرم؟
BORHAN TEC
چهارشنبه 25 اسفند 1389, 08:56 صبح
سلام
با استفاده از کد زیر به راحتی می توانید این کار را انجام دهید:
#include<iostream.h>
template<typename T>
T **AllocateDynamicArray(int nRows, int nCols) {
T **dynamicArray;
dynamicArray = new T*[nRows];
for (int i = 0; i < nRows; i++)
dynamicArray[i] = new T[nCols];
return dynamicArray;
}
template<typename T>
void FreeDynamicArray(T** dArray) {
delete[] * dArray;
delete[]dArray;
}
int main() {
int k;
k = 4; // use cin....
int b;
b = 4; // use cin....
int **my2dArr = AllocateDynamicArray<int>(k, b);
my2dArr[0][0] = 89;
my2dArr[2][2] = 8;
cout << my2dArr[0][0] << endl;
cout << my2dArr[2][2] << endl;
FreeDynamicArray<int>(my2dArr);
char response;
cin >> response;
return 0;
}
vahid_xml
چهارشنبه 25 اسفند 1389, 12:10 عصر
معذرت میخوام میشه یه مقدار بیشتر توضیح بدین چون من میخوام از این امکان توی جاهای مختلفی استفاده کنم و باید روش کار کد بالا رو بدونم ؟:خجالت::خجالت::خجالت:
BORHAN TEC
چهارشنبه 25 اسفند 1389, 13:36 عصر
معذرت میخوام میشه یه مقدار بیشتر توضیح بدین چون من میخوام از این امکان توی جاهای مختلفی استفاده کنم و باید روش کار کد بالا رو بدونم ؟
با کدام قسمت از کد بالا مشکل دارید؟ در بالا برای ایجاد آرایه دو بعدی از template ها استفاده شده است که تقریباً معادل generic در زبان های دیگر مثل Delphi و یا C# است. بهتر است برای آشنایی با template ها که نام فارسی آن "الگو" است به یک کتاب مراجعه کنید، چون بحث در مورد آن زیاد است.
shahmohammadi
چهارشنبه 24 فروردین 1390, 12:29 عصر
سلام من كد هايي رو پيدا كرده ام كه همون روش آقاي عشايري رو به كار برده ولي فرقهايي هم داره. شايد به درد دوستان بخوره.
// ALLOCATE A TWO-DIMENSIONAL SPACE, INITIALIZE, AND DELETE IT.
#include <except.h>
#include <iostream.h>
void display(long double **);
void de_allocate(long double **);
int m = 3; // THE NUMBER OF ROWS.
int n = 5; // THE NUMBER OF COLUMNS.
int main(void) {
long double **data;
try { // TEST FOR EXCEPTIONS.
data = new long double*[m]; // STEP 1: SET UP THE ROWS.
for (int j = 0; j < m; j++)
data[j] = new long double[n]; // STEP 2: SET UP THE COLUMNS
}
catch (xalloc) { // ENTER THIS BLOCK ONLY IF xalloc IS THROWN.
// YOU COULD REQUEST OTHER ACTIONS BEFORE TERMINATING
cout << "Could not allocate. Bye ...";
exit(-1);
}
for (int i = 0; i < m; i++)
for (int j = 0; j < n; j++)
data[i][j] = i + j; // ARBITRARY INITIALIZATION
display(data);
de_allocate(data);
return 0;
}
void display(long double **data) {
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++)
cout << data[i][j] << " ";
cout << "\n" << endl;
}
}
void de_allocate(long double **data) {
for (int i = 0; i < m; i++)
delete[] data[i]; // STEP 1: DELETE THE COLUMNS
delete[] data; // STEP 2: DELETE THE ROWS
}
Borland C++ 5.0 Programmer's Guide
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.