Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 15 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
15
Dung lượng
430,68 KB
Nội dung
NMLT M NG D LI U Tr n Ph c Tu n tranphuoctuan.khoatoan.dhsp@gmail.com http://baigiang.tranphuoctuan.com M ng – Array M t s tính ch t Khai bá báo m ng C Truy xu t 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 NH P MÔN L P TRÌNH 12/23/2009 M ng – M t s tính ch t M ng là m t ki u d li u có có c u trú trúc ng i l p trình nh ngh a Dùng bi u di n i t ng d li u d ng m t dãy thành ph n có ki u v i – ki u c s NNLT C 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 khai báo không bao gi thay i NH P MÔN L P TRÌNH 12/23/2009 M ng – Khai báo C typedef ki uc s Tênki u[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 l p trì trình viên typedef int t tên AINT[100]; //AINT ki u m ng bi u di n dãy g m 100 thành ph n int AINT NH P MÔN L P TRÌNH a; //a: bi n ki u AINT 12/23/2009 M ng – Ví d #define #define SIZE SIZE int int a[5]; a[5]; 10 10 // // aa dãy dãy gg mm 55 ss nguyên nguyên long long int int big[100]; big[100];// // big: big: chi chi mm 400 400 bytes! bytes! double double d[100]; d[100]; long long double double // // d: d: chi chi mm 800 800 bytes! bytes! v[SIZE];// v[SIZE];// v:10 v:10 long long doubles doubles NH P MÔN L P TRÌNH M ng – Ví d int int double double short short long long a[5] a[5] d[100] d[100] primes[] primes[] b[50] b[50] kh i tr cho thành ph n == {{ 10, 10, 20, 20, 30, 30, == {{ 1.5, 2.7}; 1.5, 2.7}; == {{ 1, 1, 2, 2, 3, 3, 5, 5, == {{ 00 }; }; compiler xác nh kích th c g m thành ph n int ii == 7; int 7; const int c = 5; const int c = 5; int a[i]; int a[i]; double d[c]; double d[c]; short primes[]; short primes[]; NH P MÔN L P TRÌNH 12/23/2009 40, 40, 50}; 50}; 7, 7, 11, 11, 13}; 13}; cách nhanh nh t kh i tr t c thành ph n b ng 12/23/2009 thành ph n u tiên c kh i tr , ph n l i: M ng – Truy xu t 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 size-1 Thao tác truy xu t không ki m tra gi i h n c a ch s int int main() main() {{ int int a[6]; a[6]; int i int i == 7; 7; a[0] = 59; a[0] = 59; a[5] a[5] == -10; -10; a[i/2] = a[i/2] = 2; 2; a[6] = 0; a[6] = 0; a[-1] a[-1] == 5; 5; return 0; return 0; }} NH P MÔN L P TRÌNH a 12/23/2009 Truy n tham s M ng cho hàm Tham s ki u m ng c truy n cho hàm a ch c a ph n t u tiên m ng S thành ph n 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) {{ NH P MÔN L P TRÌNH 12/23/2009 Ví d primes #include #include void sum(long void sum(long [], [], int); int); int main(void) { int main(void) { long long primes[6] primes[6] == {{ 1, 1, 2, 2, 3, 5, 7, 11 }; 3, 5, 7, 11 }; sum(primes, sum(primes, 6); 6); printf("%li\n", printf("%li\n", primes[0]); primes[0]); return 0; return 0; }} 11 a sz void voidsum(long sum(long a[], a[], int int sz) sz) {{ int int i; i; long long total total == 0; 0; for(i = 0; i < for(i = 0; i < sz; sz; i++) i++) total += a[i]; total += a[i]; a[0] = a[0] = total; total; }} NH P MÔN L P TRÌNH dùng ki m tra gi i h n ch ng c l u vào ph n t u tiên 12/23/2009 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 px p NH P MÔN L P TRÌNH 12/23/2009 10 M ng – Nh p d li u void void ReadData(int ReadData(int a[], a[], int int size) size) {{ t qua t t c int i; int i; ph n t for(i for(i == 0; 0; ii 0)&&(a[pos(pos>0)&&(a[pos-1]>X); pos ) ) a[pos] a[pos] == a[pos a[pos –– 1]; 1]; a[pos] = X; a[pos] = X; NN ++; ++; }} NH P MÔN L P TRÌNH 12/23/2009 18 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 kh i m ng a ang có N thành ph n ng gi i quy t: xác nh v trí c a X, n u tìm th y d n ph n t phía sau lên l p vào ch tr ng tr ng h p: Dãy th t : l p ph n t cu i lên Dãy ã th t : d i t t c ph n t sau ví ví trí c a X lên tr c v trí NH P MÔN L P TRÌNH 19 12/23/2009 M ng – Lo i b X kh i dãy t ng Lo i kh i (a, 8) pos 12 15 STOP N=7 X Tìm v trí c a NH P MÔN L P TRÌNH Ok, found n v trí 4, 5, 6, lên 12/23/2009 20 M ng – Lo i b X kh i dãy t ng //input: //input: dãy dãy (a, (a, N), N), XX //output: //output: dãy dãy (a, (a, N) N) ãã lo lo ii bb 11 thành thành ph ph nn XX int Remove(int int Remove(int a[], a[], int int &N, &N, int int X) X) {{ int int pos pos == Search(a, Search(a, N, N, X); X); if (pos == 1) //không có ó XX c if (pos == -1) //không có dãy dãy return return 0; 0; NN ; ; -; for for (; (; (pos (pos [...]... – S p x p 1 2 j 3 1 2 12 8 i ch 4 5 6 7 8 5 2 6 4 15 i NH P MÔN L P TRÌNH 12/23/2009 24 M ng – S p x p 1 2 3 j 4 1 2 12 4 8 i ch 5 6 7 8 5 6 4 15 i NH P MÔN L P TRÌNH 25 12/23/2009 M ng – S p x p i ch 1 2 3 4 j 5 1 2 4 12 5 8 6 7 8 6 5 15 i NH P MÔN L P TRÌNH 12/23/2009 26 M ng – S p x p i ch 1 2 3 4 5 6 7 8 1 2 4 5 6 8 12 15 NH P MÔN L P TRÌNH M ng – S p x p 12/23/2009 27 i ch void void Swap(int Swap(int... a[pos + 1]; return return 1; 1; }} NH P MÔN L P TRÌNH 12/23/2009 21 M ng – S p x p Bài toá thu toán: S p x p cá các thà thành ph n c a (a, (a, N) c dãy t ng d n Gi i pháp: Tìm cách tri t tiêu t t c các ngh ch th c a dãy Thu t toán s p x p i ch tr c ti p NH P MÔN L P TRÌNH 12/23/2009 22 M ng – S p x p i ch 1 j 2 3 4 5 6 7 8 12 1 2 8 5 1 6 4 15 i NH P MÔN L P TRÌNH 23 12/23/2009 M ng – S p x p 1 2 j... = 238; rainfall[brighton][day_of_year] rainfall[brighton][day_of_year] == 0.0F; 0.0F; NH P MÔN L P TRÌNH Tóm l 12/23/2009 29 c Khai báo m ng trong C Truy xu t các ph n t Truy n tham s ki u m ng cho hà hàm Các thao tá tác: nh p, xu t, thêm/h y 1 thà thành ph n, tìm ki m, s p x p M ng nhi u chi u NH P MÔN L P TRÌNH 12/23/2009 30 ... N) N) {{ int int i, i, j; j; for for (i (i == 00 ;; i ... S p x p i ch j 12 15 i NH P MÔN L P TRÌNH 23 12/23/2009 M ng – S p x p j 12 i ch 15 i NH P MÔN L P TRÌNH 12/23/2009 24 M ng – S p x p j 12 i ch 15 i NH P MÔN L P TRÌNH 25 12/23/2009 M ng – S... Dãy ã có th t Tìm v trí thích h p, chèn X vào NH P MÔN L P TRÌNH 15 12/23/2009 M ng – Thêm X vào cu i dãy Thêm 15 vào (a, 7) 12 N=8 NH P MÔN L P TRÌNH a[N] a[N] == X; X; 15 X NN ++; ++; 12/23/2009... for -1 ]>X); pos ) (pos>0)&&(a[pos -for (pos (pos == N; N; (pos>0)&&(a[pos(pos>0)&&(a[pos-1]>X); pos ) ) a[pos] a[pos] == a[pos a[pos –– 1]; 1]; a[pos] = X; a[pos] = X; NN ++; ++; }} NH P MÔN