Arrays Trong C++

Arrays Trong C++

I. Arrays Trong C ++

1/ Mảng C++

Mảng được sử dụng để lưu trữ nhiều giá trị trong một biến duy nhất, thay vì khai báo các biến riêng biệt cho từng giá trị.

Để khai báo một mảng, hãy xác định kiểu biến, chỉ định tên của mảng, theo sau là dấu ngoặc vuông và chỉ định số phần tử mà nó sẽ lưu trữ:

string cars[4];

Bây giờ chúng ta đã khai báo một biến chứa một mảng bốn chuỗi. Để chèn các giá trị vào nó, chúng ta có thể sử dụng một ký tự mảng – đặt các giá trị trong danh sách được phân tách bằng dấu phẩy, bên trong dấu ngoặc nhọn:

string cars[4] = {"Volvo", "BMW", "Ford", "Mazda"};

Để tạo một mảng ba số nguyên, bạn có thể viết:

int myNum[3] = {10, 20, 30};

2/ Truy Cập Các Phần Tử Của Một Mảng

Bạn truy cập một phần tử mảng bằng cách tham chiếu đến số chỉ mục bên trong dấu ngoặc vuông [].

Câu lệnh này truy cập giá trị của phần tử đầu tiên trong ô tô:

Example

string cars[4] = {"Volvo", "BMW", "Ford", "Mazda"};
cout << cars[0];
// Outputs Volvo

Lưu ý: Chỉ mục mảng bắt đầu bằng 0: [0] là phần tử đầu tiên. [1] là phần tử thứ hai, v.v.

3/ Thay Đổi Một Phần Tử Mảng

Để thay đổi giá trị của một phần tử cụ thể, hãy tham khảo số chỉ mục:

cars[0] = "Opel";

Example

string cars[4] = {"Volvo", "BMW", "Ford", "Mazda"};
cars[0] = "Opel";
cout << cars[0];
// Now outputs Opel instead of Volvo

II. Arrays and Loops Trong C++

Vòng Qua Một Mảng

Bạn có thể lặp qua các phần tử của mảng bằng vòng lặp for.

Ví dụ sau xuất ra tất cả các phần tử trong mảng ô tô:

Example

string cars[4] = {"Volvo", "BMW", "Ford", "Mazda"};
for (int i = 0; i < 4; i++) {
  cout << cars[i] << "\n";
}

Ví dụ sau xuất ra chỉ mục của mỗi phần tử cùng với giá trị của nó:

Example

 

string cars[4] = {"Volvo", "BMW", "Ford", "Mazda"};
for (int i = 0; i < 4; i++) {
  cout << i << ": " << cars[i] << "\n";
}

III. Omit Array Size Trong C++

1/ Bỏ Qua Kích Thước Mảng

Bạn không phải chỉ định kích thước của mảng. Nhưng nếu bạn không làm như vậy, nó sẽ chỉ lớn bằng các phần tử được chèn vào đó:

string cars[] = {"Volvo", "BMW", "Ford"}; // size of array is always 3

Điều này là hoàn toàn tốt. Tuy nhiên, vấn đề nảy sinh nếu bạn muốn có thêm không gian cho các yếu tố trong tương lai. Sau đó, bạn phải ghi đè các giá trị hiện có:

string cars[] = {"Volvo", "BMW", "Ford"};
string cars[] = {"Volvo", "BMW", "Ford", "Mazda", "Tesla"};

Tuy nhiên, nếu bạn chỉ định kích thước, mảng sẽ dành thêm không gian:

string cars[5] = {"Volvo", "BMW", "Ford"}; // size of array is 5, even though it's only three elements inside it

Giờ đây, bạn có thể thêm phần tử thứ tư và thứ năm mà không cần ghi đè những phần tử khác:

Example

cars[3] = "Mazda";
cars[4] = "Tesla";

2/ Bỏ Qua Các Phần Tử Trên Khai Báo

Cũng có thể khai báo một mảng mà không cần chỉ định các phần tử trên khai báo và thêm chúng sau:

Example

string cars[5];
cars[0] = "Volvo";
cars[1] = "BMW";
...

 

IV. Array Size Trong C++

Nhận Kích Thước Của Một Mảng

Để nhận kích thước của một mảng, bạn có thể sử dụng toán tử sizeof ():

Example

int myNumbers[5] = {10, 20, 30, 40, 50};
cout << sizeof(myNumbers);

Result:

20

Tại sao kết quả hiển thị 20 thay vì 5, khi mảng chứa 5 phần tử?

Đó là vì toán tử sizeof () trả về kích thước của một kiểu tính bằng byte.

Bạn đã học được từ chương Kiểu dữ liệu rằng kiểu int thường là 4 byte, vì vậy từ ví dụ trên, 4 x 5 (4 byte x 5 phần tử) = 20 byte.

Để biết một mảng có bao nhiêu phần tử, bạn phải chia kích thước của mảng cho kích thước của kiểu dữ liệu mà nó chứa:

Example

int myNumbers[5] = {10, 20, 30, 40, 50};
int getArrayLength = sizeof(myNumbers) / sizeof(int);
cout << getArrayLength;

Result:

5

V. Multi-Dimensional Arrays Trong C++

1/ Mảng Đa Chiều

Mảng nhiều chiều là một mảng của các mảng.

Để khai báo một mảng nhiều chiều, hãy xác định kiểu biến, chỉ định tên của mảng, theo sau là dấu ngoặc vuông cho biết mảng chính có bao nhiêu phần tử, tiếp theo là một tập hợp dấu ngoặc vuông khác cho biết mảng con có bao nhiêu phần tử :

string letters[2][4];

Như với các mảng thông thường, bạn có thể chèn các giá trị bằng một ký tự mảng – một danh sách được phân tách bằng dấu phẩy bên trong dấu ngoặc nhọn. Trong một mảng nhiều chiều, mỗi phần tử trong một ký tự mảng là một ký tự mảng khác.

string letters[2][4] = {
  { "A", "B", "C", "D" },
  { "E", "F", "G", "H" }
};

Mỗi tập hợp các dấu ngoặc vuông trong khai báo mảng sẽ thêm một thứ nguyên khác vào một mảng. Một mảng như trên được cho là có hai chiều.

Mảng có thể có bất kỳ số thứ nguyên nào. Mảng càng có nhiều thứ nguyên thì mã càng trở nên phức tạp. Mảng sau có ba thứ nguyên:

string letters[2][2][2] = {
  {
    { "A", "B" },
    { "C", "D" }
  },
  {
    { "E", "F" },
    { "G", "H" }
  }
};

2/ Truy Cập Các Phần Tử Của Một Mảng Đa Chiều

Để truy cập một phần tử của một mảng đa chiều, chỉ định một số chỉ mục trong mỗi kích thước của mảng.

Câu lệnh này truy cập giá trị của phần tử trong hàng đầu tiên (0) và cột thứ ba (2) của mảng chữ cái.

Example

string letters[2][4] = {
  { "A", "B", "C", "D" },
  { "E", "F", "G", "H" }
};

cout << letters[0][2];  // Outputs "C"

Hãy nhớ rằng: Chỉ mục của mảng bắt đầu bằng 0: [0] là phần tử đầu tiên. [1] là phần tử thứ hai, v.v.

3/ Thay Đổi Các Phần Tử Trong Một Mảng Đa Chiều

Để thay đổi giá trị của một phần tử, hãy tham khảo số chỉ mục của phần tử trong mỗi thứ nguyên:

Example

string letters[2][4] = {
  { "A", "B", "C", "D" },
  { "E", "F", "G", "H" }
};
letters[0][0] = "Z";

cout << letters[0][0];  // Now outputs "Z" instead of "A"

4/ Vòng Lặp Qua Một Mảng Đa Chiều

Để lặp qua một mảng nhiều chiều, bạn cần một vòng lặp cho mỗi kích thước của mảng.

Ví dụ sau xuất ra tất cả các phần tử trong mảng chữ cái:

Example

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";
  }
}

Ví dụ này cho thấy cách lặp qua một mảng ba chiều:

Example

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";
    }
  }
}

5/ Tại Sao Lại Có Mảng Đa Chiều?

Mảng đa chiều rất tốt trong việc biểu diễn lưới. Ví dụ này cho thấy một cách sử dụng thực tế cho chúng. Trong ví dụ sau, chúng tôi sử dụng một mảng đa chiều để thể hiện một trò chơi Battleship nhỏ:

Example

// 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
[column]) { // If the player hit a ship, remove it by setting the value to zero. ships
[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";

 

0 / 5 - (0 Đánh Giá)

Leave a Reply

Your email address will not be published. Required fields are marked *

PHP Code Snippets Powered By : XYZScripts.com
.
.
.
.