12.07.2015 Views

NMLT_C07_Mang1Chieu_In.pdf

NMLT_C07_Mang1Chieu_In.pdf

NMLT_C07_Mang1Chieu_In.pdf

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

VC&& BBKhai báo biến mảng (tường minh)VC&& BBKhai báo biến mảng (tường minh)Tường minh []; [][]…[];• , …, : số lượng phần tử của mỗi chiều.Lưu ý• Phải xác định cụ thể (hằng) khi khai báo.• Mảng nhiều chiều: = N1*N2*…*Nn• Bộ nhớ sử dụng = *sizeof()• Bộ nhớ sử dụng phải ít hơn 64KB (65535 Bytes)• Một dãy liên tục có chỉ số từ 0 đến -1Ví dụint <strong>Mang1Chieu</strong>[10];<strong>Mang1Chieu</strong>int Mang2Chieu[3][4];Mang2Chieu0120 1 2 3 4 5 6 7 8 90 1 2 3 4 5 6 7 8 910 11<strong>NMLT</strong> - Mảng một chiều5<strong>NMLT</strong> - Mảng một chiều6VC&& BBKhai báo biến mảng (kô tường minh)VC&& BBSố phần tử của mảngCú pháp• Không tường minh (thông qua khai báo kiểu)typedef [];typedef []…[]; ;Ví dụtypedef int <strong>Mang1Chieu</strong>[10];typedef int Mang2Chieu[3][4];<strong>Mang1Chieu</strong> m1, m2, m3;Mang2Chieu m4, m5;<strong>NMLT</strong> - Mảng một chiều7Phải xác định cụ thể số phần tử ngay lúc khaibáo, không được sử dụng biến hoặc hằngthườngint n1 = 10; int a[n1];const int n2 = 20; int b[n2];Nên sử dụng chỉ thị tiền xử lý #define để địnhnghĩa số phần tử mảng#define n1 10#define n2 20int a[n1];int b[n1][n2];// int a[10];// int b[10][20];<strong>NMLT</strong> - Mảng một chiều8


VC&& BBHàm Tách 2 MảngVC&& BBGộp 2 mảng thành một mảngvoid TachSNT2(int a[], int na,int b[], int &nb, int c[], int &nc){nb = 0;nc = 0;}for (int i = 0; i < na; i++)if (LaSNT(a[i]) == 1){b[nb] = a[i]; nb++;}else{c[nc] = a[i]; nc++;}<strong>NMLT</strong> - Mảng một chiều33Yêu cầu• Cho trước mảng a, số lượng phần tử na và mảng bsố lượng phần tử nb. Gộp 2 mảng trên theo tứ tự đóthành mảng c, số lượng phần tử nc.Ý tưởng• Chuyển các phần tử của mảng a sang mảng c=> nc = na• Tiếp tục đưa các phần tử của mảng b sang mảng c=> nc = nc + nb<strong>NMLT</strong> - Mảng một chiều34VC&& BBHàm Gộp MảngVC&& BBTìm giá trị lớn nhất của mảngvoid GopMang(int a[], int na, int b[], int nb,int c[], int &nc){nc = 0;}for (int i = 0; i < na; i++){c[nc] = a[i]; nc++; // c[nc++] = a[i];}for (int i = 0; i < nb; i++){c[nc] = b[i]; nc++; // c[nc++] = b[i];}Yêu cầu• Cho trước mảng a có n phần tử. Tìm giá trị lớn nhấttrong a (gọi là max)Ý tưởng• Giả sử giá trị max hiện tại là giá trị phần tử đầu tiên a[0]• Lần lượt kiểm tra các phần tử còn lại để cập nhật max.max 78 ?0 1 2 n – 1MAX - 17 2 8 … 8……<strong>NMLT</strong> - Mảng một chiều35<strong>NMLT</strong> - Mảng một chiều36

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!