Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 22 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
22
Dung lượng
148,26 KB
Nội dung
Chương Kiểu liệu có cấu trúc TRẦN MINH THÁI Email: minhthai@itc.edu.vn Website: www.minhthai.edu.vn Cập nhật: 08 tháng 04 năm 2015 Nội dung #2 Khái niệm Khai báo Cách truy xuất thành phần bên cấu trúc Xử lý cấu trúc đơn Xử lý mảng có cấu trúc Bài tập Khái niệm #3 Kiểu liệu có cấu trúc kiểu liệu lập trình viên tự định nghĩa bằng cách gom nhóm kiểu liệu có sẵn C thành kiểu liệu phức hợp gồm nhiều thành phần Khai báo struct tên_struct { khai báo thuộc tính; }; typedef struct tên_struct TênKDL; Khái niệm #4 Ví dụ khai báo kiểu liệu lưu thông tin ngày: struct ttDate { char thu[10]; int ngay; int thang; int nam; }; typedef struct ttDate Date; Truy cập thuộc tính cấu trúc #5 Biến kiểu cấu trúc TÊNKDL tên_biến; tên_biến.tên_thuộc_tính; Ví dụ Date x; x.ngay = 5; Truy cập thuộc tính cấu trúc #6 Biến trỏ kiểu cấu trúc TÊNKDL *tên_biến_con_trỏ; tên_biến_con_trỏ -> tên_thuộc_tính; Ví dụ: Date *x ; x = (Date*) malloc(sizeof(Date)); x -> = ; Khai báo đệ quy #7 struct tên_struct { khai báo thuộc tính; struct tên_struct *tên_thuộc_tính_đệ_qui; }; Khai báo đệ quy #8 Ví dụ: struct ttNode { int key; struct ttNode *pNext; }; Ví dụ #9 Viết chương trình nhập vào toạ độ hai điểm mặt phẳng và tính tổng hai toạ độ này //File Khaibao.h #include struct ttDiem { int x; int y; }; typedef struct ttDiem Diem; Ví dụ #10 //File caidat.cpp #include "khaibao.h" void Nhap (Diem &d) { printf(“\nNhap vao toa diem\n”); printf(“Hoanh : “); scanf(“%d”, &d x); printf(“Tung : ”); scanf(“%d”, &d.y); } Ví dụ #11 void Xuat (Diem d) { printf(“\nToa diem : (%d, %d)”, d.x, d.y); } Diem Tong (Diem d1, Diem d2) { Diem temp; temp.x = d1.x + d2.x ; temp.y = d1.y + d2.y ; return temp; Ví dụ //File main.cpp #12 #include”khaibao.h” void main () { Diem A , B, AB; //khai bao diem A, B, AB; Nhap (A); Xuat (A); Nhap (B); Xuat (B); printf(“\n Tong cua hai diem vua nhap la : ”); AB = Tong (A, B); Xuat (AB); Bài tập #13 Viết chương trình nhập vào thơng tin sinh viên gồm: Mã số sinh viên Họ tên Điểm kỳ (GK) Điểm thực hành (TH) Điểm lý thuyết (LT) Tính điểm tổng kết mơn theo cơng thức: GK*10%+TH*30%+LT*60% Bài tập #14 Sử dụng kiểu liệu có cấu trúc để khai báo viết chương trình (theo phương pháp thủ tục hàm) gồm chức sau: Nhập vào phân số Tính tổng tích hai phân số (kết phải là phân số tối giản) Xuất kết hình Bài tập #15 Viết chương trình nhập vào thời gian t1 t2 (thông tin thời gian gồm: giờ, phút giây); tính khoảng cách t1 t2 (đơn vị tính bằng giây) Mảng cấu trúc #16 Cách khai báo tương tự mảng chiều (Kiểu liệu kiểu liệu có cấu trúc) Cách truy cập phần tử mảng cũng truy cập mảng chiều Nhưng từng phần tử có kiểu cấu trúc nên phải chỉ định rõ cần lấy thành phần nào, tức phải truy cập đến thành phần cuối cùng có kiểu liệu Nguyên tắc lập trình mảng cấu trúc #17 Do kiểu liệu có cấu trúc thường chứa nhiều thành phần nên viết chương trình loại ta cần lưu ý: Xây dựng hàm xử lý cho một kiểu cấu trúc Muốn xử lý cho mảng cấu trúc, ta gọi lại hàm xử lý cho một kiểu cấu trúc đã được xây dựng bằng cách dùng vòng lặp 17 Ví dụ #18 Viết hàm nhập vào mảng phân số struct ttPhanSo { int tu, mau; }; typedef struct ttPhanSo PhanSo; Ví dụ #19 void NhapPS(PhanSo &ps) { printf("Nhap tu so: "); scanf("%d« , &ps.tu); printf("\nNhap mau so: “); scanf(“%d”, &ps.mau); } Ví dụ #20 void NhapMangPS(PHANSO dsps[], int n) { for(int i=0; i