ساختار آرایه ها در C++
آخرین به روز رسانی در شنبه 18 مهر 1388 ساعت 22:48 نوشته شده توسط مدیر سایت جمعه 17 مهر 1388 ساعت 18:30
سطح: متوسط
آرایه های یک بعدی در C++
فرض کنید بخواهیم اطلاعات دانشجویان یک کلاس را دریافت کرده و پردازشهایی روی آنها انجام دهیم. اگر بخواهیم برای هر دانشجو تعدادی متغیر مثل name، id و score تعریف کنیم که اطلاعاتی شامل نام، شماره دانشجویی و نمره درسی آنها را در برداشته باشند، تعداد زیادی متغیر خواهیم داشت که کارهای مشابهی انجام می دهند. این کار باعث می شود که حجم کد زیاد شده و خوانایی برنامه از دست برود. در چنین مواردی از آرایه ها کمک می گیریم.
نحوه ی تعریف آرایه به صورت زیر است:
Data Type Array Name [array size];
مثال: برای معرفی یک آرایه از اعداد اعشاری با طول 5 می توانیم از دستور زیر استفاده کنیم:
double scores[5];با این کار به میزان 5 عدد اعشاری از حافظه RAM تخصیص داده می شود که هر کدام 8 بایت فضا اشغال می کنند (چرا؟):
| RAM ADDRESS: 0x008C2F00 – 0x008C2F27 | |||||||||||||||||||||||||||||||||||||||
| 00 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 0A | 0B | 0C | 0D | 0E | 0F | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 1A | 1B | 1C | 1D | 1E | 1F | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| scores[0] | scores[1] | scores[2] | scores[3] | scores[4] | |||||||||||||||||||||||||||||||||||
برای دستیابی به عناصر آرایه، از اندیس آنها استفاده می کنیم، مثلا scores[0] اولین عنصر و scores[3] چهارمین عنصر آرایه را نشان می دهد. برای اینکه عناصر آرایه را مقدار دهی اولیه کنیم به صورت زیر عمل می کنیم:
double scores[5] = {20, 12, 14.5, 16.25, 10.75};اگر بخواهیم تمام عناصر را به 0 مقداردهی اولیه کنیم، می توانیم از فرمت مختصر زیر استفاده کنیم:
double scores[5] = {0}; //initialize all elements with zeroهنگامی که از مقداردهی اولیه استفاده می کنیم، می توانیم اندازه آرایه را تعیین نکنیم تا خود کامپایلر بر اساس تعداد مقادیر اولیه آن را تعیین کند:
double scores[] = {20, 12, 14.5, 16.25, 10.75};آرایه های چند بعدی در C++
برای تعریف آرایه های چندبعدی کافیست به تعداد ابعاد، از براکت استفاده کنیم. برای مثال اگر بخواهیم یک ماتریس 2 در 4 معرفی کنیم به صورت زیر عمل می کنیم: (به نحوه ی مقدار دهی اولیه دقت کنید)
int matrix[2][4] = {
{12, 13, 14, 15},
{10, 8, 123, 95}
};همین طور اگر بخواهیم یک آرایه سه بعدی تعریف کنیم:
double matrixArray[2][3][2] =
{
{{1.1, 2.25}, {45.5, 16 }, {1, 0}},
{{21, 53.40}, {98.3, 85.5}, {9, 0}}
};در ادامه برنامه ای می نویسیم که اطلاعات 5 دانشجو شامل نام، شماره دانشجویی و نمره آنها را گرفته و به صورت یک جدول نمایش دهد:
double scores[5];
//initializing array
int IDs[5] = {0};//initialize all elements with zero
//Another initialization
std::string names[] = {"a", "b", "c", "d", "e"};
//take data from user
cout << "\n\tEnter 5 student names\n";
cout << "----------------------------------\n";
for (int i = 0; i < 5; i++)
cin >> names[i];
cout << "\n\tEnter their IDs\n";
cout << "----------------------------------\n";
for (int i = 0; i < 5; i++)
cin >> IDs[i];
cout << "\n\tEnter their scores\n";
cout << "----------------------------------\n";
for (int i = 0; i < 5; i++)
cin >> scores[i];
cout << "\n\n" << setw(10) << "NAME" << "\tID\tSCORE\n";
cout << "----------\t------\t------\n";
for (int i = 0; i < 5; i++){
cout << setw(10) << names[i] << "\t" << IDs[i] << "\t" << scores[i] << endl;
}خروجی برنامه را ببینید:

در پستهای بعدی سورس کد پروژه برای دانلود قرار خواهد گرفت.

