mình đọc code của bạn rồi, mình sẽ giải thích phần mảng mà bạn thắc mắc.
Vì trong C++ mảng được bắt đầu = 0 chứ không phải = 1. nếu khai báo 1 mảng là a[5] thì mảng sẽ gồm các phần tử a[0],a[1],a[2],a[3],a[4]. Và trong code của mình thì làm theo nguyên tắc này. Bạn nên tập làm quen với cách đếm...