Một số thuật tóan thường gặp trên dữ liệu kiểu array... Một số thuật tóan thường gặp trên dữ liệu kiểu array... Một số thuật tóan thường gặp trên dữ liệu kiểu array... Một số thuật tó
Trang 1CÂU HỎI: Cho biết kết quả thực
thi chương trình sau:
Trang 2CHƯƠNG 6
KIỂU ARRAY (Tiếp theo)
Trang 3I. Khai báo biến kiểu array
II. Truy xuất biến array
III. Truyền thông số kiểu array
IV. Sử dụng hàm tạo số ngẫu nhiên
V. Một số thuật tóan trên array
A ARRAY 1 CHIỀU:
Trang 4Giả sử ta có mảng: int a[100]; int b[20];
Các lời gọi hàm sau đều hợp lệ:
Trang 5 Thông số kiểu array mặc định truyền dạng
tham biến
Ví dụ 1: Hàm nhập giá trị mảng
void nhap(int a[], int& n)
{ cout<<“nhap so phan tu “;cin>>n;
for (int i=0; i<n; i++)
Trang 6 Hàm random(n) cho kết quả là một
số ngẫu nhiên có trị 0 n -1.
sau mỗi lần gọi hàm khởi động trình ngẫu nhiên randomize();
viện stdlib.h
IV Sử dụng hàm tạo số ngẫu nhiên
Trang 7Ví dụ 1: Nhập các phần tử mảng bằng số ngẫu
nhiên 0-99:
void nhap(int a[], int& n)
{ cout<<“nhap so phan tu “;cin>>n;
Trang 80 max/min
1 Tính tổng/tích dãy số: Duyệt tòan bộ
mảng, thực hiện cộng hoặc nhân tích
V Một số thuật tóan thường gặp
trên dữ liệu kiểu array
Trang 92 Tìm kiếm: Duyệt mảng cho đến khi tìm thấy.
V Một số thuật tóan thường gặp
trên dữ liệu kiểu array
Trang 10Ví dụ 2: Tìm vị trí phần tử cuối cùng của dãy là số
nguyên tố (-1 nếu không tìm thấy)
V Một số thuật tóan thường gặp
trên dữ liệu kiểu array
Trang 11int LastPrimeNumber(int a[], int n)
{ int i=n-1;
while (!PrimeNumber(a[i]) && i>=0) i ; return i;
}
V Một số thuật tóan thường gặp
trên dữ liệu kiểu array
Trang 123 Đếm số phần tử theo điều kiện cho
trước: Duyệt tòan bộ mảng, tăng trị biến đếm khi phần tử đang duyệt thỏa điều
V Một số thuật tóan thường gặp
trên dữ liệu kiểu array
Trang 13V Một số thuật tóan thường gặp
trên dữ liệu kiểu array
Trang 144 Sắp xếp – Thuật tóan bubble sort:
Mô tả thuật tóan:
Cuối cùng duyệt 2 phần tử cuối // n-2 n-1
V Một số thuật tóan thường gặp
trên dữ liệu kiểu array
Trang 154 Sắp xếp – Thuật tóan bubble sort:
so sánh a[i] và a[j] đổi chỗ;
V Một số thuật tóan thường gặp
trên dữ liệu kiểu array
Trang 164 Sắp xếp – Thuật tóan bubble sort:
a[i]=a[j];
a[j]=tam;
}}
V Một số thuật tóan thường gặp
trên dữ liệu kiểu array
Trang 17Định nghĩa: Là kiểu mảng một chiều trong
đó mỗi phần tử có kiểu là kiểu mảng một chiều.
Nội dung:
I. Khai báo và truy xuất phần tử.
II. Truyền thông số kiểu array 2 chiều.
III. Một số thuật tóan trên array 2 chiều.
B ARRAY 2 CHIỀU:
Trang 181 Cú pháp khai báo biến:
Ý nghĩa: Khai báo biến TênBiến là dãy có N1 phần
tử, mỗi phần tử là dãy N2 phần tử kiểu
Trang 19Ví dụ 1: Để lưu điểm của 5 môn, mỗi môn
Trang 20Lưu ý 1: Người ta thường trình bày mỗi phần tử
của chiều thứ 1 trên một dòng Nên N1 còn gọi là số dòng, N2 là số cột
Ta khai báo biến: int MaTran[3][4];
I Khai báo và truy xuất phần tử
Trang 21Lưu ý 2 : Các phần tử của biến mảng 2
chiều được cấp phát không gian nhớ liên
Trang 222 Truy xuất biến mảng 2 chiều: Phải truy xuất
j là chỉ số chiều thứ hai, hay chỉ số cột
I Khai báo và truy xuất phần tử
cú pháp: TênBiến[i][j]
Trang 24Ví dụ 2: Nhập dữ liệu cho biến mảng 2c
int T[10][20];
for(int i=0; i<10; i++)
for(int j=0; j<20; j++) { cout<<“Nhập a[“<<i<<“]=“;
cin>>a[i][j];
}
I Khai báo và truy xuất phần tử
Trang 25}
I Khai báo và truy xuất phần tử
Trang 263 Khai báo có khởi động trị:
Trang 271 Cách viết thông số hình thức :
Thông số hình thức kiểu mảng 2 chiều
không cần chỉ ra số dòng, nhưng phải chỉ định số cột.
Khi gọi hàm, thông số thực phải là
mảng 2 chiều có số cột khai báo giống như thông số hình thức.
Ví dụ: hàm xuất mảng 2 chiều
II Thông số kiểu mảng 2 chiều:
Trang 292 Mảng 2 chiều là tham biến:
Thông số kiểu mảng 2 chiều mặc định
là truyền bằng địa chỉ (tham biến).
Ví dụ: hàm nhập mảng 2 chiều
II Thông số kiểu mảng 2 chiều:
Trang 30} }
Trang 31 Là các thuật tóan trên mảng 1 chiều được áp
dụng trên một số phần tử giới hạn hoặc trên tòan mảng 2C Ví dụ:
3 Duyệt đường chéo chính
4 Duyệt đường chéo phụ
5 Duyệt nửa tam giác trên đường chéo phụ
III Một số thuật tóan trên M2C:
Trang 35cout<<“Cho biết cột cần in: “; cin>>K;
for(int i=0; i<4; i++)
Trang 373 Duyệt đường chéo chính: Các phần tử trên
đường chéo chính là các phần tử có chỉ số dòng bằng chỉ số cột.(ma trận vuông)
Ví dụ:
int T[4][4]={ {1,2,3,4},
{5,6,7,8},{4,3,2,1},{8,7,6,5} };
for(int i=0; i<4; i++)
Trang 394 Duyệt đường chéo phụ: Các phần tử trên
for(int i=0; i<4; i++)
Trang 415 Duyệt đường ½ tam giác trên đường chéo chính:
Các phần tử ở nửa trên đường chéo chính là các phần tử có chỉ số dòng i, chỉ số cột j thỏa i<=j;
Trang 42III Một số thuật tóan trên M2C:
Trang 43Ví dụ áp dụng các cách duyệt:
Sắp xếp các phần tử trên đường chéo phụ.
void swap(int&a, int&b)