Bài giảng Nhập môn lập trình - Chương 8: Mảng nhiều chiều Kiểu cấu trúc - Nguyễn Minh Huy

Mꢀng nhiꢁu chiꢁu  
Kiꢂu cꢃu trúc  
GV. Nguyꢀn Minh Huy  
Nhꢁp môn lꢁp trình ꢂ GV.Nguyꢀn Minh Huy  
1
Nꢃi dung  
ꢀ Mꢄng nhiꢅu chiꢅu.  
ꢀ Kiꢆu cꢇu trúc.  
Nhꢁp môn lꢁp trình ꢂ GV.Nguyꢀn Minh Huy  
2
Nꢃi dung  
ꢀ Mꢀng nhiꢁu chiꢁu.  
ꢀ Kiꢆu cꢇu trúc.  
Nhꢁp môn lꢁp trình ꢂ GV.Nguyꢀn Minh Huy  
3
Mꢄng nhiꢅu chiꢅu  
ꢀ Xét chương trình sau:  
ꢀ Nhꢁp và xuꢇt ma trꢁn 5 x 10.  
ꢁ Khai báo 5 mꢄng: int a1[10], a2[10], a3[10], a4[10], a5[10].  
ꢀ Nhꢁp và xuꢇt ma trꢁn 50 x 10.  
ꢁ Khai báo 50 mꢄng!!  
ꢂ Làm sao biꢆu diꢀn ma trꢁn M x N?  
Nhꢁp môn lꢁp trình ꢂ GV.Nguyꢀn Minh Huy  
4
Mꢄng nhiꢅu chiꢅu  
ꢀ Giꢄi pháp 1:  
ꢀ Dùng mꢄng mꢃt chiꢅu!!  
ꢀ Biꢆu diꢀn ma trꢁn M x N:  
ꢁ Khai báo mꢄng mꢃt chiꢅu M x N phꢈn tꢉ.  
ꢁ Đꢆ truy xuꢇt dòng i cꢃt j  
ꢂ Truy xuꢇt phꢈn tꢉ [ i * N + j ].  
Nhꢁp môn lꢁp trình ꢂ GV.Nguyꢀn Minh Huy  
5
Mꢄng nhiꢅu chiꢅu  
ꢀ Giꢄi pháp 2:  
ꢀ Dùng mꢄng cꢊa mꢄng.  
ꢀ Tꢋ khóa typedef:  
ꢁ Đꢌt tên khác cho kiꢆu dꢍ liꢎu.  
ꢁ Cú pháp:  
typedef <Kiꢆu dꢍ liꢎu> <Tên khác>;  
typedef int SoNguyen;  
typedef float MangThuc[ 10 ];  
SoNguyen a, b, c;  
MangThuc m;  
printf(“%d %d %d”, a, b, c);  
m[ 5 ] = 123;  
Nhꢁp môn lꢁp trình ꢂ GV.Nguyꢀn Minh Huy  
6
Mꢄng nhiꢅu chiꢅu  
ꢀ Giꢄi pháp 2:  
ꢀ Biꢆu diꢀn ma trꢁn M x N:  
ꢁ Đꢌt tên cho mꢄng mꢃt chiꢅu N phꢈn tꢉ.  
ꢁ Khai báo mꢄng mꢃt chiꢅu M phꢈn tꢉ kiꢆu đã đꢌt tên.  
ꢁ Đꢆ truy xuꢇt dòng i cꢃt j  
ꢂ Truy xuꢇt phꢈn tꢉ [ i ] [ j ].  
Nhꢁp môn lꢁp trình ꢂ GV.Nguyꢀn Minh Huy  
7
Mꢄng nhiꢅu chiꢅu  
ꢀ Giꢄi pháp 3:  
ꢀ Dùng mꢄng nhiꢅu chiꢅu.  
ꢀ Khai báo:  
<Kiꢆu dꢍ liꢎu> <Tên mꢀng>[<Sꢏ dòng>] [<Sꢏ cꢃt>];  
<Sꢏ dòng>, <Sꢏ cꢃt> phꢄi là mꢃt hꢐng sꢏ.  
int m1[ 5 ][ 10 ]; // Ma trꢁn 5 x 10 sꢏ nguyên.  
int m2[ M ][ N ]; // Sai.  
ꢀ Truy xuꢇt phꢈn tꢉ:  
<Tên mꢄng> [ <Chꢄ sꢅ dòng> ] [ <Chꢄ sꢅ cꢆt> ]  
<Chꢑ sꢏ dòng>: mꢃt sꢏ nguyên tꢋ 0 đꢒn <Sꢅ dòng> ꢇ 1.  
<Chꢑ sꢏ cꢃt>: mꢃt sꢏ nguyên tꢋ 0 đꢒn <Sꢅ cꢆt> ꢇ 1.  
m1[ 0 ][ 2 ] = 5;  
m1[ 1 ][ 3 ] = 6;  
m1[ ꢇ1 ][ 10 ] = 7; // Sai.  
Nhꢁp môn lꢁp trình ꢂ GV.Nguyꢀn Minh Huy  
8
Mꢄng nhiꢅu chiꢅu  
ꢀ Giꢄi pháp 3:  
ꢀ Dùng mꢄng nhiꢅu chiꢅu.  
ꢀ Khꢓi tꢔo:  
<Kiꢆu dꢍ liꢎu> <Tên mꢀng>[<Sꢏ dòng>] [<Sꢏ cꢃt>] =  
{
<Khꢓi tꢔo dòng 0>,  
<Khꢓi tꢔo dòng 1>,  
ꢕ
};  
// Khꢓi tꢔo tꢇt cꢄ phꢈn tꢉ.  
// Khꢓi tꢔo vài phꢈn tꢉ.  
// Tꢖ đꢃng biꢒt sꢏ dòng.  
int m1[ 3 ][ 5 ] =  
{
int m1[ 3][ 5 ] =  
{
int m1[ ][ 5 ] =  
{
{ 1, 1, 1, 1, 1 },  
{ 1, 2, 3, 4, 5 },  
{ 5, 4, 3, 2, 1 }  
};  
{ 1, 1 },  
{ 1, 2, 3 },  
{ 0 }  
{ 1, 1 },  
{ 1, 2, 3 },  
{ 0 }  
};  
};  
Nhꢁp môn lꢁp trình ꢂ GV.Nguyꢀn Minh Huy  
9
Khái niꢎm mꢄng  
ꢀ Giꢄi pháp 3:  
ꢀ Dùng mꢄng nhiꢅu chiꢅu.  
ꢀ Truyꢅn tham sꢏ mꢄng:  
ꢁ Khai báo tham sꢏ mꢄng giꢏng biꢒn mꢄng.  
void foo( int a[5][10] );  
ꢁ Khai báo tham sꢏ mꢄng có thꢆ bꢗ sꢏ dòng.  
void foo( int a[ ][10] );  
ꢁ Phꢈn tꢉ mꢄng có thꢆ bꢘ thay đꢙi sau khi ra khꢗi hàm.  
void main()  
{
void foo( int a[ ][10] )  
{
int a[5][10] = { { 0 } };  
a[2][2] = 9;  
a[2][5] = 8;  
}
foo(a);  
// a[2][2], a[2][5] bꢘ thay đꢙi.  
}
Nhꢁp môn lꢁp trình ꢂ GV.Nguyꢀn Minh Huy  
10  
Nꢃi dung  
ꢀ Mꢄng nhiꢅu chiꢅu.  
ꢀ Kiꢂu cꢃu trúc.  
Nhꢁp môn lꢁp trình ꢂ GV.Nguyꢀn Minh Huy  
11  
Kiꢆu cꢇu trúc  
ꢀ Xét chương trình sau:  
ꢀ Thông tin mꢃt hꢚc sinh gꢛm:  
ꢁ Hꢚ tên.  
ꢁ Ngày sinh.  
ꢁ Giꢜi tính.  
ꢁ Điꢆm văn, toán, ngoꢔi ngꢍ.  
ꢀ Viꢒt chương trình:  
ꢁ Nhꢁp vào 1 hꢚc sinh.  
ꢁ Xuꢇt thông tin hꢚc sinh vꢋa nhꢁp.  
Nhꢁp môn lꢁp trình ꢂ GV.Nguyꢀn Minh Huy  
12  
Kiꢆu cꢇu trúc  
ꢀ Kiꢆu cꢇu trúc trong C:  
ꢀ Kiꢆu dꢍ liꢎu phꢝc hꢞp.  
ꢂ Gom nhóm dꢍ liꢎu vꢜi nhau.  
ꢀ Khai báo kiꢆu cꢇu trúc:  
struct HocSinh  
{
struct <Tên cꢇu trúc>  
{
<Khai báo thành phꢈn 1>;  
<Khai báo thành phꢈn 2>;  
ꢕ
};  
char hoten[50];  
char ngaysinh[11];  
bool gioitinh;  
float diemvan;  
float diemtoan;  
};  
ꢀ Khai báo biꢒn cꢇu trúc:  
void main()  
{
<Tên cꢃu trúc> <Tên biꢒn>;  
HocSinh hs1, hs2;  
}
Nhꢁp môn lꢁp trình ꢂ GV.Nguyꢀn Minh Huy  
13  
Kiꢆu cꢇu trúc  
ꢀ Kiꢆu cꢇu trúc trong C:  
ꢀ Khꢓi tꢔo biꢒn cꢇu trúc:  
void main()  
{
<Tên cꢃu trúc> <Tên biꢒn> =  
{
<Giá trꢘ thành phꢈn 1>,  
<Giá trꢘ thành phꢈn 2>,  
ꢕ
};  
HocSinh hs =  
{
“Nguyen Van A”,  
“01/01/1997”,  
1,  
7, 8, 9  
ꢀ Truy xuꢇt thành phꢈn:  
};  
<Tên biꢒn> . <Tên thành phꢈn>.  
hs.diemvan = 5;  
hs.diemToan = 9;  
}
Nhꢁp môn lꢁp trình ꢂ GV.Nguyꢀn Minh Huy  
14  
Kiꢆu cꢇu trúc  
void cong1(HocSinh hs)  
{
ꢀ Kiꢆu cꢇu trúc trong C:  
ꢀ Truyꢅn tham sꢏ:  
hs.diemvan++;  
hs.diemtoan++;  
}
ꢁ Giꢏng các kiꢆu bình thưꢟng.  
ꢁ Truyꢅn tham trꢘ  
ꢂ Giá trꢘ thành phꢈn không đꢙi.  
ꢁ Truyꢅn tham chiꢒu  
void cong2(HocSinh &hs)  
{
hs.diemvan++;  
hs.diemtoan++;  
}
ꢂ Giá trꢘ thành phꢈn thay đꢙi.  
void main()  
{
HocSinh hs1;  
cong1(hs1);  
cong2(hs1);  
}
Nhꢁp môn lꢁp trình ꢂ GV.Nguyꢀn Minh Huy  
15  
Tóm tꢠt  
ꢀ Mꢄng nhiꢅu chiꢅu:  
ꢀ Giꢄi pháp 1: mꢄng mꢃt chiꢅu.  
ꢀ Giꢄi pháp 2: mꢄng cꢊa mꢄng.  
ꢀ Giꢄi pháp 3: mꢄng nhiꢅu chiꢅu thꢁt sꢖ.  
ꢀ
Kiꢆu cꢇu trúc:  
ꢀ Kiꢆu dꢍ liꢎu phꢝc hꢞp.  
ꢀ Gom nhóm dꢍ liꢎu vꢜi nhau.  
ꢀ Khai báo: tꢋ khóa “struct”.  
ꢀ Truy xuꢇt phꢈn tꢉ: dꢇu “.”.  
Nhꢁp môn lꢁp trình ꢂ GV.Nguyꢀn Minh Huy  
16  
Bài tꢁp  
ꢀ Bài tꢁp 8.1:  
Viꢒt chương trình C thao tác ma trꢁn như sau:  
ꢂ Nhꢁp vào ma trꢁn vuông N x N chꢝa sꢏ nguyên.  
ꢂ Hãy cho biꢒt:  
a) Tꢙng phꢈn tꢉ nꢐm trên đưꢟng chéo chính/phꢡ.  
b) Dòng có tꢙng lꢜn nhꢇt, nhꢗ nhꢇt.  
c) Ma trꢁn có là mꢃt ma phương hay không.  
Nhꢁp môn lꢁp trình ꢂ GV.Nguyꢀn Minh Huy  
17  
Bài tꢁp  
ꢀ Bài tꢁp 8.2:  
Viꢒt chương trình C thao tác ma trꢁn như sau:  
ꢂ Nhꢁp vào 2 ma trꢁn M x N và N x K chꢝa sꢏ nguyên.  
ꢂ Hãy:  
a) Tính tích 2 ma trꢁn vꢋa nhꢁp.  
b) Trích ra danh sách các sꢏ xuꢇt hiꢎn ꢓ cꢄ 2 ma trꢁn.  
Nhꢁp môn lꢁp trình ꢂ GV.Nguyꢀn Minh Huy  
18  
Bài tꢁp  
ꢀ Bài tꢁp 8.3:  
Viꢒt chương trình C thao tác phân sꢏ như sau:  
ꢂ Khai báo kiꢆu cꢇu trúc phân sꢏ.  
ꢂ Nhꢁp vào 2 phân sꢏ.  
ꢂ Tính và xuꢇt kꢒt quꢄ tꢙng, hiꢎu, tích, thương, nghꢘch đꢄo, rút gꢚn  
cꢊa 2 phân sꢏ vꢋa nhꢁp.  
Nhꢁp môn lꢁp trình ꢂ GV.Nguyꢀn Minh Huy  
19  
Bài tꢁp  
ꢀ Bài tꢁp 8.4:  
Viꢒt chương trình C thao tác đơn thꢝc như sau:  
ꢂ Khai báo kiꢆu cꢇu trúc đơn thꢝc.  
ꢂ Nhꢁp vào 2 đơn thꢝc (có dꢔng axN).  
ꢂ Tính và xuꢇt kꢒt quꢄ tích, thương, đꢔo hàm, nguyên hàm cꢊa hai  
đơn thꢝc vꢋa nhꢁp.  
Nhꢁp môn lꢁp trình ꢂ GV.Nguyꢀn Minh Huy  
20  
Tải về để xem bản đầy đủ
pdf 21 trang myanh 20460 Free
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Nhập môn lập trình - Chương 8: Mảng nhiều chiều Kiểu cấu trúc - Nguyễn Minh Huy", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • pdfbai_giang_nhap_mon_lap_trinh_chuong_8_mang_nhieu_chieu_kieu.pdf