Em đang học tới bài mảng 1 chiều trên cpp.daynhauhoc.com và có 1 câu hỏi: “Các bạn thử giải thích trong đoạn code thực hiện đẩy các phần tử đứng sau vị trí insert_position này lui sau một vị trí, tại sao mình cho chỉ số bắt đầu từ (N - 2) nhé.”. Em đã thử trừ 1 số khác như 1, 3, 5, 6… và em thấy N - 1 gần như không khác gì N - 2. Vậy mục đích N - 2 có ý gì khác không? Em vẫn chưa tìm ra được nguyên nhân tại sao nên là N - 2
#include
#include
#include
using namespace std;
#define MAX_SIZE 100
int main()
{
//initialize array
int32_t arr[MAX_SIZE];
int32_t N = 5;
for (int32_t index = 0; index <= N - 1; index++) {
arr[index] = index + 1;
}
//input insert_value and insert_position from keyboard
int32_t insert_value, insert_position;
cout << "Enter insert_value: "; cin >> insert_value;
cout << "Enter insert_position: "; cin >> insert_position;
//inserting
N++;
for (int32_t i = N - 2; i >= insert_position; i--) {
int32_t after_i = i + 1;
arr[after_i] = arr[i];
}
arr[insert_position] = insert_value;
//output array
for (int32_t index = 0; index <= N - 1; index++)
cout << arr[index] << " ";
cout << endl;
system("pause");
return 0;
}
Các bạn thử giải thích trong đoạn code thực hiện đẩy các phần tử đứng sau vị trí insert_position này lui sau một vị trí, tại sao mình cho chỉ số bắt đầu từ (N - 2) nhé.
// why (N - 2)?
for (int32_t i = N - 2; i >= insert_position; i–) {
int32_t after_i = i + 1;
arr[after_i] = arr[i];
}
bởi vì trong phần insert
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?