Problem

2/9

Truy cập một phần tử mảng

Theory Click to read/hide

Tham chiếu đến một phần tử mảng.

Hầu hết lợi ích của mảng đến từ thực tế là các phần tử của mảng có thể được truy cập riêng lẻ.
Cách thực hiện việc này là sử dụng một chỉ mục để đánh số các phần tử.
Chỉ mục là một giá trị trỏ đến một phần tử mảng cụ thể.

Ghi nhớ: Việc đánh số mảng C# bắt đầu từ 0.< br />
Ví dụ về cách truy cập mảng A:
int x = (A[3] + 5) * A[1] / / đọc giá trị A[3] và A[1] A[0] = x + 6 // ghi giá trị mới vào A[0] Hãy phân tích chương trình làm việc với các phần tử của mảng. int i = 1; int[] A = new int[5]; //tạo mảng 5 phần tử A[0] = 23; // đến từng phần tử trong số 5 phần tử của mảng (chỉ số từ 0 đến 4) A[1] = 12; // ghi một giá trị cụ thể A[2] = 7; A[3] = 43; A[4] = 51; A[2] = A[i] + 2*A[i-1] + A[2*i]; // đổi giá trị của phần tử có chỉ số 2 thành kết quả của biểu thức // vì i=1 nên thay giá trị của biến i vào biểu thức ta được // biểu thức tiếp theo A[2] = A[1] + 2*A[0] + A[2]; Console.Write((A[2] + A[4])); Kết quả của việc thực hiện chương trình này, giá trị của tổng các phần tử của mảng bằng chỉ số 2 và chỉ số 4 sẽ xuất hiện trên màn hình, bằng 116. Như bạn có thể thấy từ ví dụ, chúng ta có thể truy cập bất kỳ phần tử nào của mảng. Và cũng có thể tính số phần tử cần thiết bằng nhiều công thức khác nhau (ví dụ: như trong chương trình A[i-1] hoặc A[2*i], trong những trường hợp này, các chỉ số phần tử sẽ được tính toán và phụ thuộc vào giá trị của i).

Hãy phân tích một chương trình ví dụ.
int N = 5; int[] A = new int[N]; int x = 1; A[x + 4] = A[x] + A[2 * (x + 1)];  // sau khi thay x vào biểu thức và phép tính                            // lấy dòng tiếp theo A[5] = A[1] + A[4]                           // A[5] không có phần tử nào như vậy tồn tại                           // lỗi - mảng ngoài giới hạn Mảng được khai báo có 5 phần tử, nghĩa là các phần tử sẽ được đánh số từ 0 đến 4. Ta thấy rằng chương trình ở dòng thứ 6 đề cập đến một phần tử không tồn tại: A[5].
Hóa ra chương trình đã đi quá giới hạn của mảng.
Việc tràn mảng là quyền truy cập vào một phần tử tại một chỉ mục không tồn tại trong mảng.
Trong những trường hợp như vậy, chương trình thường gặp sự cố với lỗi thời gian chạy.

 

Problem

Trong các dòng từ 9 đến 12, đặt các phần tử mảng ở chỉ số 1 đến 4 gấp đôi giá trị phần tử trước của mảng. 
Trong nhiệm vụ này, bạn không thể gán các số cụ thể, bạn phải tham chiếu phần tử trước đó của mảng theo tên và chỉ mục, tức là bản ghi
A[1] = 46 sẽ bị coi là không hợp lệ.