Bài giảng này trang bị cho người học những hiểu biết về cấu trúc mảng, điển hình là mảng một chiều và mảng hai chiều. Những nội dung chính trong bài này gồm có: Khai báo mảng, sử dụng mảng, một số bài toán, khai báo mảng hai chiều, sử dụng mảng hai chiều. Mời các bạn cùng tham khảo.
Trang 1Môn học Tin đại cương
Lý Anh Tuấn
Bộ môn Khoa học máy tính, Khoa Công nghệ
thông tin, Trường đại học Thủy Lợi
Trang 2Cấu trúc mảng
Mảng một chiều
Khai báo mảng
Sử dụng mảng
Một số bài toán
Mảng hai chiều
Khai báo mảng hai chiều
Sử dụng mảng hai chiều
Trang 3Mảng
Mảng là tập hữu hạn các phần tử có cùng kiểu dữ
liệu và chiếm một vùng liên tục trong bộ nhớ
Vị trí tương đối giữa các phần tử trong mảng được xác định bởi chỉ số
Ví dụ: Mảng a chứa 5 giá trị nguyên kiểu int có thể được biểu diễn như sau:
Trang 4Khai báo mảng
Khai báo mảng:
kiểu_dữ_liệu tên_mảng[số_phần_tử];
Ví dụ:
int a[5]; // khai báo mảng a gồm 5 phần tử số nguyên có chỉ số từ 0 đến 4
double x[10],y[10]; //khai báo hai mảng thực x,y mỗi mảng gồm 10 phần tử có chỉ số từ 0 đến 9
Trang 5Khai báo mảng
Khi khai báo một mảng, chúng ta có thể gán giá trị ban đầu cho các phần tử của mảng
bằng cách đặt các giá trị trong cặp dấu {}
Ví dụ:
int a[5] = { 16, 2, 77, 40, 12071 }; //hoặc
int a[] = { 16, 2, 77, 40, 12071 };
các khai báo này tạo ra một mảng như sau:
Trang 6Sử dụng mảng
Có thể thao tác với các phần tử của mảng
như thao tác với một biến thông thường
Các phần tử của mảng được xác định theo
cách sau:
Tênmảng[chỉ_số]
Ví dụ: Các phần tử của mảng a
Trang 7Sử dụng mảng
Ví dụ:
Có thể viết các lệnh gán:
a[0]=75;
a[1]=2*a[0];
Chỉ số là cũng có thể là một biến nguyên, hoặc
một biểu thức nguyên:
i=4;
a[i]=5;
Trang 8Sử dụng mảng
Một số thao tác với mảng:
Nhập dữ liệu cho mảng
cout << "Nhap so phan tu cua day:" ;
cin >> n;
for (i=0; i<n; i++) {
cout << "a[" << i << "] = " ;
cin >> a[i];
}
Trang 9Một số bài toán
Tính tổng các phần tử của mảng
Đếm số phần tử dương trong mảng
Tìm phần tử lớn nhất (bé nhất) của mảng, và
vị trí xuất hiện của nó
Sắp xếp mảng theo chiều tăng dần (giảm
dần)
Trang 10// Tính tổng các phần tử của dãy
#include <iostream>
using namespace std;
int main()
{
float a[50], s;
int i, n;
cout << "Nhap so phan tu cua day: " ;
cin >> n;
for (i=0; i<n; i++) {
cout << "a[" << i << "] = " ;
cin >> a[i];
}
s = 0 ;
for (i=0; i<n; i++) s = s + a[i];
cout << "Day da nhap la:" << endl;
for (i=0; i<n; i++) cout << a[i] << " ";
Trang 11// Đếm số phần tử dương trong dãy
#include <iostream>
using namespace std;
int main()
{
float a[50];
int i, n, dem;
cout << "Nhap so phan tu cua day: " ;
cin >> n;
for (i=0; i<n; i++) {
cout << "a[" << i << "] = " ;
cin >> a[i];
}
dem = 0 ;
for (i=0; i<n; i++) if (a[i]>0) dem++;
cout << "Day da nhap la:" << endl;
for (i=0; i<n; i++) cout << a[i] << " ";
Trang 12// Tìm phần tử bé nhất trong dãy, và vị trí xuất hiện của nó
#include <iostream>
using namespace std;
int main()
{
float a[50], min;
int i, n, k;
cout << "Nhap so phan tu cua day: " ;
cin >> n;
for (i=0; i<n; i++) {
cout << "a[" << i << "] = " ;
cin >> a[i];
}
min = a[0]; k = 0;
for (i=1; i<n; i++)
if (a[i] < min ) {
min = a[i]; k = i;
Trang 13// Sắp xếp dãy theo chiều tăng dần
#include <iostream>
using namespace std;
int main()
{
float a[50], tam;
int i, j, n;
cout << "Nhap so phan tu cua day: " ;
cin >> n;
for (i=0; i<n; i++) {
cout << "a[" << i << "] = " ;
cin >> a[i];
}
for (i=0; i<n; i++)
for (j=i+1; j<n; j++)
if (a[i] > a[j]) {
tam = a[i]; a[i] = a[j]; a[j] = tam;
Trang 14Mảng hai chiều
Mảng hai chiều còn gọi là ma trận, là sự mở rộng của mảng một chiều
Ví dụ: Mảng hai chiều a gồm 3*5 phần tử có cùng kiểu dữ liệu có thể biểu diễn như sau
Trang 15Khai báo mảng hai chiều
Khai báo mảng hai chiều:
kiểu_dữ_liệu tên_mảng[m][n];
m,n là số hàng, số cột của mảng hai chiều
ví dụ: int a[3][5]; //khai báo mảng gồm 3*5
phần tử kiểu nguyên từ a[0][0] đến a[2][4]
Các phần tử của mảng hai chiều được xác
định theo cách sau:
Trang 16Sử dụng mảng hai chiều
Một số thao tác với mảng hai chiều:
Nhập dữ liệu cho mảng hai chiều
cout << "Nhap so hang, so cot cua ma tran:" ; cin >> m >> n;
for (i=0; i<m; i++)
for (j=0; j<n; j++) {
cout << "a[" << i << "][" << j << "] = " ; cin >> a[i][j];
Trang 17Sử dụng mảng hai chiều
In các giá trị của mảng hai chiều ra màn hình
cout << "Ma tran da nhap la:" << endl;
for (i=0; i<m; i++)
{
for (j=0; j<n; j++) cout << a[i][j] << " ";
cout << endl;
Trang 18Một số bài toán
Các bài toán trên mảng hai chiều quy về thực hiện trên mảng một chiều
Thực hiện các tính toán trên một hàng, một cột hoặc trên đường chéo chính của mảng hai chiều
Các bài toán thực hiện tính toán trên toàn bộ mảng hai chiều Ví dụ:
Tính tổng tất cả các phần tử của mảng hai chiều
Đếm số phần tử dương trong mảng hai chiều
Trang 19//Tính trung bình cộng các phần tử trên đường chéo chính của ma trận vuông
#include <iostream>
using namespace std;
int main()
{
double a[10][10],s;
int n,i,j;
cout << "Nhap bac cua ma tran vuong:"; cin >> n;
for (i=0; i<n; i++)
for (j=0; j<n; j++) {
cout << "a[" << i << "][" << j << "] = " ; cin >> a[i][j];
}
s=0;
for (i=0; i<n; i++) s=s+a[i][i];
cout << "Ma tran vuong da nhap la:" << endl;
for (i=0; i<n; i++)
{
for (j=0; j<n; j++) cout << a[i][j] << " ";