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 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ꢡ.
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.
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 đủ
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:
bai_giang_nhap_mon_lap_trinh_chuong_8_mang_nhieu_chieu_kieu.pdf

