#include <iostream>
using namespace std;
void display(int marks[5]);
int main()
{
int marks[5] = {88, 76, 90, 61, 69};
display(marks);
return 0;
}
void display(int m[5])
{
cout << “Displaying marks: “<< endl;
for (int i = 0; i < 5; ++i)
{
cout << “Student “<< i + 1 <<“: “<< m[i] << endl;
}
}
برای ارسال آرایه به تابع تنها نام آن استفاده می شود.
display(marks);
همچنین تفاوت را در هنگام ارسال آرایه به عنوان آرگومان به جای متغیر متوجه می شوید.
void display(int m[5]);
آرگومان marks در کد بالا نشان دهنده آدرس حافظه عنصر اول آرایه [۵]mark است.
و آرگومان عادی [۵]int m در تعریف تابع به int * m تبدیل می شود. این اشاره گر به همان آدرس اشاره شده توسط آرایه marks اشاره دارد.
اگرچه در تابع آرایه با نام [۵]m تعریف شده اما آرایه marks هنگام ارسال به جای آن می نشیند و تغییرات روی آن اعمال می شود.
C++ برای انتقال یک آرایه به تابع از این شیوه برای صرفه جویی در حافظه و زمان پردازش استفاده می کند.
انتقال آرایه چند بعدی به یک تابع
آرایه چند بعدی می تواند مشابه بالا به صورت آرایه یک بعدی به تابع ارسال شود. مثال زیر را در نظر بگیرید که می خواهیم آرایه دو بعدی را به یک تابع ارسال کنیم:
مثال ۲: انتقال آرایه چند بعدی به یک تابع
برنامه زیر عناصر یک آرایه دو بعدی را با استفاده از تابع نمایش می دهد.
#include <iostream>
using namespace std;
void display(int n[3][2]);
int main()
{
int num[3][2] = {
{۳, ۴},
{۹, ۵},
{۷, ۱}
};
display(num);
return 0;
}
void display(int n[3][2])
{
cout << “Displaying Values: ” << endl;
for(int i = 0; i < 3; ++i)
{
for(int j = 0; j < 2; ++j)
{
cout << n[i][j] << ” “;
}
}
}
در برنامه بالا، آرایه چند بعدی num به تابع ()display ارسال می شود.
در تابع ()display ، آرایه
num(n)
با استفاده از حلقه ی تو در تو نمایش داده می شود.
این برنامه از ۲ حلقه for برای نمایش عناصر آرایه ۲ بعدی استفاده می کند. اگر یک آرایه ۳ بعدی داشتیم، از ۳ حلقه for استفاده می کردیم.
در نهایت، تمام عناصر روی صفحه نمایش چاپ می شوند.
نکته: آرایه چند بعدی با ابعاد بیش از ۲ مانند آرایه دو بعدی، به تابع ارسال می شوند.
در C++ می توانید آرایه ای از نوع آرایه به نام آرایه چند بعدی ایجاد کنید. مثلا:
int x[3][4];
در اینجا x یک آرایه دو بعدی است و حداکثر ۱۲ عنصر را نگه می دارد.
می توانید این آرایه را به عنوان جدولی با ۳ ردیف و هر ردیف دارای ۴ ستون در نظر بگیرید که در زیر نشان داده شده است.
آرایه سه بعدی هم به شیوه ای مشابه عمل می کند. مثلا:
float x[2][4][3];
آرایه x می تواند حداکثر ۲۴ عنصر را نگه دارد. می توانید اینطور در نظر بگیرید که: هر یک از ۲ عنصر می تواند ۴ عنصر داشته باشد که در مجموع ۸ عنصر را تشکیل می دهد و هر یک از این عناصر می تواند ۳ عنصر داشته باشد. از این رو، مجموع عناصر آرایه ۲۴ تا است.
مقدار دهی اولیه در آرایه چند بعدی
می توانید آرایه چند بعدی را با چند روش مقدار دهی اولیه کنید.
مقدار دهی اولیه ی یک آرایه دو بعدی
int test[2][3] = {2, 4, -5, 9, 0, 9};
راه بهتر برای مقدار دهی اولیه آرایه با همان عناصر بالا:
int test[2][3] = { {2, 4, 5}, {9, 0 0}};
مقدار دهی اولیه آرایه سه بعدی
int test[2][3][4] = {3, 4, 2, 3, 0, -3, 9, 11, 23, 12, 23,
۲, ۱۳, ۴, ۵۶, ۳, ۵, ۹, ۳, ۵, ۵, ۱, ۴, ۹};
راه بهتر برای مقدار دهی اولیه آرایه با همان عناصر بالا:
int test[2][3][4] = {
{ {۳, ۴, ۲, ۳}, {۰, -۳, ۹, ۱۱}, {۲۳, ۱۲, ۲۳, ۲} },
{ {۱۳, ۴, ۵۶, ۳}, {۵, ۹, ۳, ۵}, {۳, ۱, ۴, ۹} }
};
مثال ۱ : آرایه دو بعدی
برنامه زیر تمام عناصر یک آرایه ی دو بعدی را نمایش می دهد.
#include <iostream>
using namespace std;
int main()
{
int test[3][2] =
{
{2, -5},
{4, 0},
{9, 1}
};
// Accessing two dimensional array using
// nested for loops
for(int i = 0; i < 3; ++i)
{
for(int j = 0; j < 2; ++j)
{
cout<< "test[" << i << "][" << j << "] = " << test[i][j] << endl;
}
}
return 0;
}
مثال ۲: آرایه دو بعدی
برنامه زیر دمای دو شهر به مدت یک هفته را ذخیره می کند و سپس نمایش می دهد.
#include <iostream>
using namespace std;
const int CITY = 2;
const int WEEK = 7;
int main()
{
int temperature[CITY][WEEK];
cout << “Enter all temperature for a week of first city and then second city. \n”;
// Inserting the values into the temperature array
for (int i = 0; i < CITY; ++i)
{
for(int j = 0; j < WEEK; ++j)
{
cout << “City ” << i + 1 << “, Day ” << j + 1 << ” : “;
cin >> temperature[i][j];
}
}
cout << “\n\nDisplaying Values:\n”;
// Accessing the values from the temperature array
for (int i = 0; i < CITY; ++i)
{
for(int j = 0; j < WEEK; ++j)
{
cout << “City ” << i + 1 << “, Day ” << j + 1 << ” = ” << temperature[i][j] << endl;
}
}
return 0;
}
مثال 3: آرایه سه بعدی
برنامه زیر مقادیر وارد شده توسط کاربر را در آرایه سه بعدی ذخیره کرده و نمایش می دهد.
#include <iostream>
using namespace std;
int main()
{
// This array can store upto 12 elements (2x3x2)
int test[2][3][2];
cout << “Enter 12 values: \n”;
// Inserting the values into the test array
// using 3 nested for loops.
for(int i = 0; i < 2; ++i)
{
for (int j = 0; j < 3; ++j)
{
for(int k = 0; k < 2; ++k )
{
cin >> test[i][j][k];
}
}
}
cout<<“\nDisplaying Value stored:”<<endl;
// Displaying the values with proper index.
for(int i = 0; i < 2; ++i)
{
for (int j = 0; j < 3; ++j)
{
for(int k = 0; k < 2; ++k)
{
cout << “test[” << i << “][” << j << “][” << k << “] = ” << test[i][j][k] << endl;
}
}
}
return 0;
}
همانطور که ابعاد افزایش می یابد، پیچیدگی هم افزایش می یابد، اگرچه مفهوم کاملا مشابه قبل است.
پایان قسمت بیستم