مشخصات مقاله
-
0.0
-
1735
-
0
-
0
آرایه ها در زبان++ C
آرایه ها در زبان C++
آرایه ها برای ذخیره چندین مقدار در یک متغیر به جای تعیین متغیرهای جداگانه استفاده می شوند. توجه به این نکته ضروری است که داده های ذخیره شده از یک نوع هستند. برای مثال شماره دانشجویی 200 نفر را می توانیم در یک آرایه ذخیره و نام دانشجویان را در یک آرایه دیگر ذخیره و نگهداری نماییم. برای اعلان یک آرایه، در ابتدا نوع متغیر را تعریف و تعداد عناصری را که باید ذخیره کند، مشخص می نماییم:
string cars[4];
متغیری را تعریف کرده ایم که آرایه ای از چهار رشته را در خود جای داده است. برای درج مقادیر در آن نیز، میتوانیم از یک آرایه به معنای واقعی کلمه استفاده کنیم، مقادیر را در یک لیست جدا شده با کاما، داخل پرانتز قرار می دهیم:
string cars[4] = {"Volvo", "BMW", "Ford", "Mazda"};
برای ایجاد یک آرایه از سه عدد صحیح، کد زیر را می توان نوشت:
int myNum[3] = {10, 20, 30};
دسترسی به عناصر یک آرایه
شما با مراجعه به عدد شاخص داخل براکت [] به یک عنصر آرایه دسترسی پیدا می کنید. کدی که در ادامه آورده شده است، به مقدار عنصر اول در آرایه ای از خودروها دسترسی دارد:
#include#include using namespace std; int main() { string cars[4] = {"Volvo", "BMW", "Ford", "Mazda"}; cout << cars[0]; return 0; }
خروجی :
Volvo
توجه نمایید شاخص های آرایه با 0 شروع می شوند، [0] اولین عنصر، [1] عنصر دوم و باقی آرایه نیز به همین شکل تعریف می شود.
تغییر یک عنصر آرایه
برای تغییر مقدار یک عنصر خاص، به شماره شاخص آن در آرایه مراجعه می نماییم؛ به کد زیر توجه نمایید:
cars[0] = "Opel"; #include#include using namespace std; int main(){ string cars[4] = {"Volvo", "BMW", "Ford", "Mazda"}; cars[0] = "Opel"; cout << cars[0]; return 0; }
خروجی :
Opel
ایجاد حلقه در آرایه ها
با استفاده از for می توانید در یک آرایه دور و یا همان حلقه ایجاد نماییم و خروجی دریافت نماییم. به مثال زیر توجه نمایید که با استفاده از حلقه ایجاد شده از عناصر آرایه خروجی نام خودرو را گرفته ایم:
#include#include using namespace std; int main(){ string cars[5] = {"Volvo", "BMW", "Ford", "Mazda", "Tesla"}; for (int i = 0; i < 5; i++){ cout << cars[i] << "\n"; } return 0; }
خروجی :
-
BMW
Ford
Mazda
Tesla
این مثال نمایه هر عنصر را همراه با مقدار آن در خروجی نمایش می دهد:
#include
#include
using namespace std;
int main(){
string cars[5] = {"Volvo", "BMW", "Ford", "Mazda", "Tesla"};
for (int i = 0; i < 5; i++) {
cout << i << " = " << cars[i] << "\n";
}
return 0;
}
خروجی :
-
1 = BMW
- 2 = Ford
- 3 = Mazda
- 4 = Tesla
در مثال زیر بررسی می کنیم که چگونه از آرایه ای که شامل اعداد است از طریق ایجاد حلقه خروجی دریافت نماییم:
#includeusing namespace std; int main(){ int myNumbers[5] {10, 20, 30, 40, 50{ for (int i = 0; i < 5; i++)} cout << myNumbers[i] << "\n"; } return 0; }
حلقه foreach
همچنین از طریق foreach نیز می توان منحصراً برای عناصر یک آرایه حلقه ایجاد نمود. نحوه ایجاد این حالت در کد برنامه به شکل زیر می باشد.
for (type variableName : arrayName) {
// code block to be executed
}
در مثال زیر از تمام عناصر یک آرایه را با استفاده از حلقه "for-each" خروجی می گیریم:
#include
using namespace std;
int main() {
int myNumbers[5] = {10, 20, 30, 40, 50};
for (int i : myNumbers) {
cout << i << "\n";
}
return 0;
}
خروجی:
-
10
20
30
40
50
بدست آوردن اندازه یک آرایه
برای بدست آوردن اندازه یک آرایه، می توانید از عملگر()sizeof استفاده کنید:
#includeusing namespace std; int main() { int myNumbers[5] = {10, 20, 30, 40, 50}; cout << sizeof(myNumbers); return 0; }
خروجی : 20
چرا در حالی که آرایه شامل 5 عنصر است، نتیجه به جای 5، 20 را نشان می دهد؟ به این دلیل که عملگر() sizeof اندازه یک نوع را بر حسب بایت برمی گرداند. نوع int معمولاً 4 بایت است، بنابراین از مثال بالا نتیجه می گیریم، (4 بایت ضرب در 5 عنصر) = 20 بایت است. برای اینکه بفهمید یک آرایه چند عنصر دارد، باید اندازه آرایه را بر اندازه نوع داده ای که دارد تقسیم کنید:
int myNumbers[5] = {10, 20, 30, 40, 50};
int getArrayLength = sizeof(myNumbers) / sizeof(int);
cout << getArrayLength;
خروجی : 5
ایجاد حلقه در آرایه با استفاده از sizeof()
با استفاده از رویکرد ()sizeof از مثال بالا، اکنون میتوانیم حلقههایی ایجاد کنیم که برای آرایههایی با هر اندازهای کار کنند.
به جای نوشتن:
int myNumbers[5] = {10, 20, 30, 40, 50};
for (int i = 0; i < 5; i++) {
cout << myNumbers[i] << "\n";
}
بهتر است از کد زیر استفاده نماییم:
#include
using namespace std;
int main() {
int myNumbers[5] = {10, 20, 30, 40, 50};
for (int i = 0; i < sizeof(myNumbers) / sizeof(int); i++) {
cout << myNumbers[i] << "\n";
}
return 0;
}
خروجی :
-
10
20
30
40
50
توجه داشته باشید که در C++ نسخه 11 (2011)، می توانید از حلقه "for-each" نیز استفاده نمایید:
#include
using namespace std;
int main() {
int myNumbers[5] = {10, 20, 30, 40, 50};
for (int i : myNumbers) {
cout << i << "\n";
}
return 0;
}
خروجی :
-
10
20
30
40
50
آرایه های چند بعدی در C++
برای ایجاد یک آرایه چند بعدی، در ابتدا نوع متغیر را تعریف می کنیم، نام آرایه و به دنبال آن کروشه های مربعی که مشخص نمایید آرایه اصلی دارای چند عنصر است و سپس مجموعه دیگری از براکت ها که نشان می دهد آرایه های فرعی چند عنصر دارند را مشخص کنید :
string letters[2][4];
در یک آرایه چند بعدی، در یک آرایه ممکن است آرایه دیگری تعریف شده باشد.
string letters[2][4] = {
{ "A", "B", "C", "D" },
{ "E", "F", "G", "H" }
};
هر مجموعه ای از براکت های مربع در یک اعلان آرایه، بعد دیگری به آرایه اضافه می کند. آرایه ای مانند بالا دو بعد دارد. آرایه ها می توانند ابعاد مختلفی داشته باشند. هر چه ابعاد یک آرایه بیشتر باشد، کد پیچیده تر خواهد شد. آرایه زیر دارای سه بعد است:
string letters[2][2][2] = {
{
{ "A", "B" },
{ "C", "D" }
},
{
{ "E", "F" },
{ "G", "H" }
}
};
دسترسی به عناصر یک آرایه چند بعدی
برای دسترسی به یک عنصر از یک آرایه چند بعدی، یک عدد شاخص در هر یک از ابعاد آرایه مشخص نمایید. این دستور به مقدار عنصر در ردیف اول (0) و ستون سوم (2) آرایه حروف دسترسی دارد. برای مثال :
#include
using namespace std;
int main() {
string letters[2][4] = {
{ "A", "B", "C", "D" },
{ "E", "F", "G", "H" }
};
cout << letters[0][2];
return 0;
}
خروجی :
C
تغییر عناصر در یک آرایه چند بعدی
برای تغییر مقدار یک عنصر، به شماره شاخص آن در هر یک از ابعاد مراجعه کنید:
#include
using namespace std;
int main() {
string letters[2][4] = {
{ "A", "B", "C", "D" },
{ "E", "F", "G", "H" }
};
letters[0][0] = "Z";
cout << letters[0][0];
return 0;
}
خروجی: Z
حلقه در یک آرایه چند بعدی
برای ایجاد حلقه از طریق یک آرایه چند بعدی، به یک حلقه برای هر یک از ابعاد آرایه نیاز دارید. مثال زیر تمام عناصر آرایه حروف را خروجی می دهد:
#include
using namespace std;
int main() {
string letters[2][4] = {
{ "A", "B", "C", "D" },
{ "E", "F", "G", "H" }
};
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 4; j++) {
cout << letters[i][j] << "\n";
}
}
return 0;
}
خروجی :
-
A
B
C
D
E
F
G
H
این مثال نشان می دهد که چگونه از طریق یک آرایه سه بعدی دور ایجاد نمایی:
#includeusing namespace std; int main() { string letters[2][2][2] = { { { "A", "B" }, { "C", "D" } }, { { "E", "F" }, { "G", "H" } } }; for (int i = 0; i < 2; i++) { for (int j = 0; j < 2; j++) { for (int k = 0; k < 2; k++) { cout << letters[i][j][k] << "\n"; } } } return 0; }
خروجی :
-
A
B
C
D
E
F
G
H
چرا آرایه های چند بعدی؟
آرایه های چند بعدی در نمایش شبکه ها عالی هستند. این مثال کاربرد عملی آنها را نشان می دهد. در مثال زیر از یک آرایه چند بعدی برای نمایش یک بازی کوچک از Battleship استفاده می کنیم:
#includeusing namespace std; int main() { // We put "1" to indicate there is a ship. bool ships[4][4] = { { 0, 1, 1, 0 }, { 0, 0, 0, 0 }, { 0, 0, 1, 0 }, { 0, 0, 1, 0 } }; // Keep track of how many hits the player has and how many turns they have played in these variables int hits = 0; int numberOfTurns = 0; // Allow the player to keep going until they have hit all four ships while (hits < 4) { int row, column; cout << "Selecting coordinates\n"; // Ask the player for a row cout << "Choose a row number between 0 and 3: "; cin >> row; // Ask the player for a column cout << "Choose a column number between 0 and 3: "; cin >> column; // Check if a ship exists in those coordinates if (ships[row][column]) { // If the player hit a ship, remove it by setting the value to zero. ships[row][column] = 0; // Increase the hit counter hits++; // Tell the player that they have hit a ship and how many ships are left cout << "Hit! " << (4-hits) << " left.\n\n"; } else { // Tell the player that they missed cout << "Miss\n\n"; } // Count how many turns the player has taken numberOfTurns++; } cout << "Victory!\n"; cout << "You won in " << numberOfTurns << " turns"; return 0; }
خروجی :
- Selecting coordinates Choose a row number between 0 and 3: 2 Choose a column number between 0 and 3: 1 Miss
- Selecting coordinates Choose a row number between 0 and 3: 2 Choose a column number between 0 and 3: 2 Hit! 3 left.
- Selecting coordinates Choose a row number between 0 and 3: 2 Choose a column number between 0 and 3: 2 Miss
- Selecting coordinates Choose a row number between 0 and 3: 3 Choose a column number between 0 and 3: 2 Hit! 2 left.
- Selecting coordinates Choose a row number between 0 and 3: 0 Choose a column number between 0 and 3: 2 Hit! 1 left.
- Selecting coordinates Choose a row number between 0 and 3: 0 Choose a column number between 0 and 3: 0 Miss
- Selecting coordinates Choose a row number between 0 and 3: 0 Choose a column number between 0 and 3: 1 Hit! 0 left.
- Victory! You won in 7 turns Process returned 0 (0x0) execution time : 24.994 s