Cấ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
Một số bài toán
19 trang |
Chia sẻ: phuongt97 | Lượt xem: 593 | Lượt tải: 0
Nội dung tài liệu Bài giảng Tin đại cương - Buổi 7&8: Cấu trúc mảng - Lý Anh Tuấn, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
1
Mô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
2
Cấ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
Một số bài toán
3
Mả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:
4
Khai 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
5
Khai 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:
6
Sử 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
7
Sử 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;
a[i/2+1]=17;
8
Sử 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];
}
In các giá trị của mảng ra màn hình
cout << "Day da nhap la:" << endl;
for (i=0; i<n; i++) cout << a[i] << " ";
9
Mộ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)
10
// Tính tổng các phần tử của dãy
#include
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] << " ";
cout << "Tong cac phan tu cua day la " << s << endl;
return 0;
}
11
// Đếm số phần tử dương trong dãy
#include
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; i0) dem++;
cout << "Day da nhap la:" << endl;
for (i=0; i<n; i++) cout << a[i] << " ";
cout << "So phan tu duong trong day la " << dem << endl;
return 0;
}
12
// Tìm phần tử bé nhất trong dãy, và vị trí xuất hiện của nó
#include
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;
}
cout << "So be nhat la " << min << " tai vi tri " << k;
return 0;
}
13
// Sắp xếp dãy theo chiều tăng dần
#include
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;
}
cout << "Day sau khi duoc sap xep:" << endl;
for (i=0; i<n; i++) cout << a[i] << " ";
return 0;
}
14
Mả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
15
Khai 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:
Tênmảng[chỉ_số_hàng][chỉ_số_cột]
ví dụ: a[1][3]=6; a[i][j]=15;
16
Sử 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];
}
17
Sử 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;
}
18
Mộ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
Tìm giá trị lớn nhất (bé nhất), và vị trí xuất hiện
của nó trong mảng hai chiều
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
using namespace std;
int main()
{
double a[10][10],s;
int n,i,j;
cout > 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] << " ";
cout << endl;
}
cout << "Trung binh cong cac phan tu tren duong cheo chinh la "<< s/n;
}
Các file đính kèm theo tài liệu này:
- bai_giang_tin_dai_cuong_buoi_78_cau_truc_mang_ly_anh_tuan.pdf