intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Bài giảng Mảng - Array

Chia sẻ: Lavie Lavie | Ngày: | Loại File: PPT | Số trang:30

82
lượt xem
6
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Bài giảng Mảng - Array nêu lên một số tính chất, khai báo mảng trong C, truy xuất các thành phần, truyền tham số kiểu mảng cho hàm, một số thao tác cơ sở, mảng nhiều chiều trong mảng - Array. Bài giảng hữu ích với các bạn chuyên ngành Công nghệ thông tin và những bạn quan tâm tới lĩnh vực này.

Chủ đề:
Lưu

Nội dung Text: Bài giảng Mảng - Array

  1. Mảng ­ Array
  2. Mảng – Array  Một số tính chất  Khai báo mảng trong C  Truy xuất các thành phần  Truyền tham số kiểu mảng cho hàm  Một số thao tác cơ sở  Mảng nhiều chiều
  3. Mảng – Một số tính chất  Mảng  là  một  kiểu  dữ  liệu  có  cấu  trúc  do  người  lập trình định nghĩa  Dùng biểu diễn các đối tượng dữ liệu ở dạng một  dãy các thành phần có cùng kiểu với nhau – kiểu  cơ sở  NNLT C luôn chỉ định một khối nhớ liên tục cho  một biến kiểu mảng  Kích thước của mảng được xác định ngay khi khai  báo và không bao giờ thay đổi
  4. Mảng – Khai báo trong C kiểucơsở TênBiến[Sốthànhphần]; kiểu của mỗi thành phần hằng số, số thành phần tối đa của mảng do lập trình viên đặt tên int a[100]; //a là mảng biểu diễn dãy gồm 100 thành phần int
  5. Mảng – Ví dụ #define #define SIZE SIZE 10 10 int int a[5]; a[5]; // // aa dãy dãy gồm gồm 55 số số nguyên nguyên long long int int big[100]; big[100];// // big: big: chiếm chiếm 400 400 bytes! bytes! double double d[100]; d[100]; // // d: d: chiếm chiếm 800 800 bytes! bytes! long long double double v[SIZE];// v[SIZE];// v:10 v:10 long long doubles doubles
  6. Mảng – Ví dụ khởi tạo cho 5 thành phần int int a[5] a[5] == {{ 10, 10, 20, 20, 30, 30, 40, 40, 50}; 50}; double double d[100] d[100] == {{ 1.5, 1.5, 2.7}; 2.7}; short short primes[] primes[] == {{ 1, 1, 2, 2, 3, 3, 5, 5, 7, 7, 11, 11, 13}; 13}; long long b[50] b[50] == {{ 00 }; }; 2 thành phần đầu tiên được Trình biên dịch xác khởi tạo, phần định kích thước còn lại: 0 gồm 7 thành phần cách nhanh nhất để khởi tạo tất cả các thành phần bằng 0
  7. Mảng – Truy xuất các phần tử  Các thành phần của mảng được truy xuất thông qua chỉ  số của chúng 0..n­1  Thao tác truy xuất không kiểm tra giới hạn của chỉ số int int main() main() a {{ 0 int int a[6]; a[6]; int 1 int ii == 7; 7; a[0] a[0] == 59; 59; 2 a[5] a[5] == -10; -10; 3 a[i/2] a[i/2] == 2;2; 4 a[6] a[6] == 0; 0; a[-1] 5 a[-1] == 5; 5; return return 0;0; }}
  8. Truyền tham số Mảng cho hàm  Tham  số  kiểu  mảng  được  truyền  cho  hàm  chính  là  địa  chỉ của phần tử đầu tiên trên mảng  Số thành phần trong tham số mảng có thể để trống.  Số  thành  phần  thực  sự  được  sử  dụng  phải  truyền  qua  một tham số khác (vd: size) int int add_elements(int add_elements(int a[], a[], int int size) size) {{ int int add_elements(int add_elements(int *p, *p, int int size) size) {{
  9. Ví dụ primes #include #include 1 void voidsum(long sum(long [], [], int); int); 2 int int main(void) main(void) {{ long 3 long primes[6] primes[6] == {{ 1,1, 2, 2, 3, 3, 5, 5, 7, 7, 11 11 }; }; 5 sum(primes, sum(primes, 6); 6); 7 printf("%li\n", printf("%li\n", primes[0]); primes[0]); 11 return return 0; 0; }} a void voidsum(long sum(long a[], a[], int int sz) sz) {{ sz 6 int int i; i; long long total total == 0; 0; dùng để kiểm tra for(i for(i == 0; 0; ii
  10. Một số thao tác cơ sở  Nhập  Xuất  Thêm một thành phần dữ liệu  Loại bỏ một thành phần dữ liệu  Tìm kiếm  Sắp xếp
  11. Mảng – Nhập dữ liệu void void ReadData(int ReadData(int a[], a[], int int size) size) {{ duyệt qua tất cả các int int i; i; phần tử for(i for(i == 0; 0; ii
  12. Mảng – Xuất dữ liệu ra màn hình void void WriteData(int WriteData(int a[], a[], int int size) size) {{ int int i; i; for(i for(i == 0; 0; ii
  13. Mảng – Nhập xuất dữ liệu #include #include void void ReadData(int ReadData(int [], [], int int ); ); void void WriteData(int WriteData(int [], [], int int ); ); int int main() main() {{ int int a[100], a[100], n; n; printf(“Nhap printf(“Nhap so so thanh thanh phan phan cua cua day: day: “); “); scanf(“%d”, scanf(“%d”, &n); &n); printf(“Nhap printf(“Nhap cac cac thanh thanh phan phan cua cua day: day: “); “); ReadData(a, ReadData(a, n); n); printf(“Day printf(“Day vua vua nhap: nhap: \n“); \n“); WriteData(a, WriteData(a, n); n); return return 0; 0; }}
  14. Mảng – Tìm vị trí X trong dãy  Bài toán: Tìm vị trí  X trên mảng a đang có N thành phần.  Giải pháp: Tìm tuần tự //input: //input: dãy dãy (a, (a, N), N), XX //output: //output: Vị Vị trí trí của của X, X, -1 -1 nếu nếu không không có có int int Search(int Search(int a[], a[], int int N, N, int int X) X) {{ for for (int (int ii == 0; 0; ii
  15. Mảng – Thêm một thành phần dữ liệu  Bài toán: cần thêm thành phần dữ liệu X vào mảng  a đang có N thành phần.  Hai trường hợp cần xem xét:  Dãy chưa có thứ tự  Thêm X vào cuối a.  Dãy đã có thứ tự  Tìm vị trí thích hợp, chèn X vào
  16. Mảng – Thêm X vào cuối dãy Thêm 15 vào (a, 7) 0 1 2 3 4 5 6 7 12 2 8 5 1 6 4 N=7 8 a[N] a[N] == X; X; NX 15 N ++; ++;
  17. Mảng – Chèn X vào dãy tăng dần Chèn 6 vào (a, 7) pos 0 1 2 3 4 5 6 7 1 2 4 5 8 12 15 N=7 8 X 6 Vị trí thích hợp: 4
  18. Mảng – Chèn X vào dãy tăng dần //input: //input: dãy dãy (a, (a, N) N) tăng tăng dần, dần, XX //output: //output: dãy dãy (a, (a, N) N) đã đã có có XX ởở đúng đúng vị vị trí trí void void insert(int insert(int mang[], mang[], int int *N, *N, int int X)X) {{ int int pos= pos= *N*N -1; -1; while while (pos (pos >= >= 00 && && mang[pos]>X) mang[pos]>X) {{ mang[pos+1] mang[pos+1] == mang[pos]; mang[pos]; pos--; pos--; }} mang[pos+1] mang[pos+1] == X; X; *N *N == *N *N ++ 1; 1; }}
  19. Mảng – Loại bỏ một thành phần dữ  liệu  Bài  toán:  loại  bỏ  thành  phần  dữ  liệu  X  ra  khỏi  mảng a đang có N thành phần.  Hướng giải quyết: xác định vị trí của X, nếu tìm  thấy  thì  dồn  các  phần  tử  ở  phía  sau  lên  để  lấp  vào chỗ trống. 2 trường hợp:  Dãy không có thứ tự: lấp phần tử cuối lên  Dãy đã thứ tự: dời tất cả các phần tử ở sau ví  trí của X lên trước 1 vị trí.
  20. Mảng – Loại bỏ X ra khỏi dãy tăng Loại 5 khỏi (a, 8) pos 0 1 2 3 4 5 6 7 12 2 8 5 1 6 4 15 N=7 8 STOP  X 5 Ok, found Tìm vị trí của 5 Dồn các vị trí 4, 5, 6, 7 lên
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2