Tài liệu Bài giảng Mẫu tin và mảng hai chiều: Mẫu tin và
mảng hai chiều
Nguyễn Đông Hà
Khoa CNTT – ĐH KHTN
Sưu tầm bởi: www.daihoc.com.vn
Ví dụ
Mẫu tin biểu diễn tọa độ một điểm gồm 2
thành phần: x, y
typedef struct{
int x;
int y;
}TOADO;
Sưu tầm bởi: www.daihoc.com.vn
Mẫu tin
Một mẫu tin (structure) là một tập hợp của một
hoặc nhiều biến nhóm lại dưới một tên duy
nhất để dễ thao tác. Các biến trong mẫu tin có
thể khác nhau về kiểu dữ liệu.
Mỗi biến trong mẫu tin có thể thuộc bất kỳ
kiểu dữ liệu nào, kể cả mảng và mẩu tin.
Sưu tầm bởi: www.daihoc.com.vn
Ví dụ khai báo mẫu tin
Kiểu dữ liệu lưu trữ điểm và tam giác trong
mặt phẳng
typedef struct{
int x, y;
}POINT;
typedef struct{
POINT A, B, C;
}TRIANGLE;
Sưu tầm bởi: www.daihoc.com.vn
Ví dụ khai báo mẫu tin
Kiểu dữ liệu lưu trữ thông tin một học sinh
cùng với điểm thi 3 môn Toán, Lý, Hóa
typedef struct{
char MaHS[11];
char Ho[31];
char Ten[8];
float DiemToan, DiemLy, DiemHoa;
}HOCSINH;
Sưu tầm bởi: www.daihoc.com.vn
Sử...
16 trang |
Chia sẻ: honghanh66 | Lượt xem: 1110 | Lượt tải: 0
Bạn đang xem nội dung tài liệu Bài giảng Mẫu tin và mảng hai chiều, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
Mẫu tin và
mảng hai chiều
Nguyễn Đông Hà
Khoa CNTT – ĐH KHTN
Sưu tầm bởi: www.daihoc.com.vn
Ví dụ
Mẫu tin biểu diễn tọa độ một điểm gồm 2
thành phần: x, y
typedef struct{
int x;
int y;
}TOADO;
Sưu tầm bởi: www.daihoc.com.vn
Mẫu tin
Một mẫu tin (structure) là một tập hợp của một
hoặc nhiều biến nhóm lại dưới một tên duy
nhất để dễ thao tác. Các biến trong mẫu tin có
thể khác nhau về kiểu dữ liệu.
Mỗi biến trong mẫu tin có thể thuộc bất kỳ
kiểu dữ liệu nào, kể cả mảng và mẩu tin.
Sưu tầm bởi: www.daihoc.com.vn
Ví dụ khai báo mẫu tin
Kiểu dữ liệu lưu trữ điểm và tam giác trong
mặt phẳng
typedef struct{
int x, y;
}POINT;
typedef struct{
POINT A, B, C;
}TRIANGLE;
Sưu tầm bởi: www.daihoc.com.vn
Ví dụ khai báo mẫu tin
Kiểu dữ liệu lưu trữ thông tin một học sinh
cùng với điểm thi 3 môn Toán, Lý, Hóa
typedef struct{
char MaHS[11];
char Ho[31];
char Ten[8];
float DiemToan, DiemLy, DiemHoa;
}HOCSINH;
Sưu tầm bởi: www.daihoc.com.vn
Sử dụng mẫu tin
Có thể dùng mẫu tin như là một kiểu dữ liệu
trong chương trình.
Sử dụng dấu chấm (.) để truy xuất đến từng
thành phần trong mẫu tin
POINT d1, d2, d3;
TRIANGLE tg1, tg2;
d1.x = 100; d2.y = 200;
tg1.A = d1;
printf(“Hoanh do diem 1 la: %d”,d1.x);
Sưu tầm bởi: www.daihoc.com.vn
Bài tập ví dụ
Bài 2 chương 5: Nhập vào 1 danh sách n
quyển sách (1 <= n <= 25), mỗi quyển sách
gồm các thông tin: mã sách, tên sách, tên tác
giả, năm xuất bản và giá tiền.
In ra màn hình thông tin chi tiết, các quyển xuất
bản trước 1975, giá lớn hơn 1000.
Nhập vào tên của một tác giả, in ra thông tin chi
tiết về các quyển sách của tác giả đó
Sưu tầm bởi: www.daihoc.com.vn
Hướng giải
Vì mỗi quyển sách bao gồm nhiều thông tin,
dữ liệu quyển sách phải lưu trữ bằng mẩu tin.
typedef struct{
int ma_sach;
char ten_sach[20];
char ten_tac_gia[20];
int nam_xuat_ban;
long gia_tien;
}SACH;
Sưu tầm bởi: www.daihoc.com.vn
Hướng giải
Dùng mảng 1 chiều để chứa n quyển sách.
Mảng khai báo có kích thước tối đa là 25.
SACH danh_sach[25];
Sưu tầm bởi: www.daihoc.com.vn
Hướng giải
In ra màn hình thông tin chi tiết, các quyển
xuất bản trước 1975, giá lớn hơn 1000.
void XuatSachTheoYeuCau(SACH mang[25],
int n)
{
int i = 0;
for(i = 0; i < n ; i++)
{
if(mang[i].nam_xuat_ban <1975 &&
mang[i].gia_tien > 1000)
XuatSach(mang[i]);
}
}
Sưu tầm bởi: www.daihoc.com.vn
Hướng giải
In ra màn hình thông tin chi tiết, các quyển
xuất bản trước 1975, giá lớn hơn 1000.
void TimSach(SACH mang[25], int n)
{
....
/* Bien s chua ten tac gia can tim */
for(i = 0; i < n; i++)
{
if(strcmp(s,mang[i].ten_tac_gia)==0)
XuatSach(mang[i]);
}
}
Sưu tầm bởi: www.daihoc.com.vn
Kiểu mảng 2 chiều
/* Tạo mảng 2 chiều có 3 dòng, 5 cột */
int a[3][5];
Khai báo mảng 2 chiều:
0 1 2 3 4
1 2 3 4 5
2 3 4 5 6
Sưu tầm bởi: www.daihoc.com.vn
Truy xuất phần tử của mảng 2 chiều
a[0][1] = 6;
a[1][2] = 9;
scanf(“%d”,&a[0][2]);
Lấy giá trị phần tử của mảng 2 chiều:
Gán giá trị cho từng phần tử
x = a[0][0];
printf(“Dong 0, cot 1: %d”, a[0][1]);
Sưu tầm bởi: www.daihoc.com.vn
Ví dụ nhập mảng 2 chiều
void NhapMang(int mang[NMAX][NMAX], int *sodong,
int *socot)
{
int i,j;
printf("\nNhap so dong cua mang 2 chieu:");
scanf("%d", sodong);
printf("\nNhap so cot cua mang 2 chieu:");
scanf("%d", socot);
for(i = 0; i < *sodong; i++)
{
for(j=0; j < *socot; j++)
{
printf("Nhap phan tu dong %d, cot %d: ", i, j);
scanf("%d", &mang[i][j]);
}
}
}
Sưu tầm bởi: www.daihoc.com.vn
Bài tập
Chương 5: 1,3,4,5
Sưu tầm bởi: www.daihoc.com.vn
Sưu tầm bởi: www.daihoc.com.vn
Các file đính kèm theo tài liệu này:
- mautinvamang2chieu_7141.pdf