Bài tập 1
Viết chương trình nhập vào thông tin của một
sinh viên gồm:
*Mã số sinh viên
*Họ và tên
*Điểm giữa 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 2
Viết chương trình nhập vào 2 thời gian t1 và
t2 (thông tin thời gian gồm: giờ, phút và
giây); tính khoảng cách giữa t1 và t2 (đơn vị
tính bằng giây)
19 trang |
Chia sẻ: thanhle95 | Lượt xem: 589 | Lượt tải: 1
Bạn đang xem nội dung tài liệu Bài giảng Kỹ thuật lập trình - Chương 5: Kiểu dữ liệu có cấu trúc - Trần Minh Thái, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
TRẦN MINH THÁI
minhthai@itc.edu.vn
1
*
Kiểu dữ liệu có cấu trúc thực chất là một kiểu dữ
liệu do người dùng định nghĩa bằng cách gom
nhóm các kiểu dữ liệu cơ bản có sẵn trong C
thành một kiểu dữ liệu phức hợp nhiều thành
phần
*Khai báo
struct tên_struct
{
khai báo các thuộc tính;
};
typedef struct tên_struct TÊNKDL;
2
*
*Ví dụ khai báo kiểu dữ liệu lưu thông tin của
ngày:
struct ttDate
{
char thu[10];
unsigned char ngay;
unsigned char thang;
int nam;
};
typedef struct ttDate DATE;
3
**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;
4
**Biến con 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 -> ngay = 5 ;
5
*Khai báo đệ qui
struct tên_struct
{
khai báo các thuộc tính;
struct tên_struct *tên_thuộc_tính_đệ_qui;
};
6
*Ví dụ:
struct ttNode
{
int key;
struct ttNode *pNext;
};
7
8Ví dụ: Viết chương trình nhập vào toa ̣đô ̣hai điểm
trong mặt phẳng va ̀tính tổng hai toa ̣đô ̣này
//File Khaibao.h
#include
struct ttDIEM
{
int x;
int y;
};
typedef struct ttDIEM DIEM;
9//File caidat.cpp
#include "khaibao.h"
void Nhap (DIEM &d)
{
cout<<“\nNhap vao toa do diem\n”;
cout<<“Hoanh do : “;
cin>>d. x;
cout“Tung do : ”;
cin>>d.y;
}
10
void Xuat (DIEM d)
{
cout<<“\nToa do diem : (“ <<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;
}
11
//File main.cpp
#include”khaibao.h”
void main ()
{
DIEM A , B, AB; //khai bao 3 diem A, B, AB;
Nhap (A);
Xuat (A);
Nhap (B);
Xuat (B);
cout<<“\n Tong cua hai diem vua nhap la : ”;
AB = Tong (A, B);
Xuat (AB);
}
12
*
Viết chương trình nhập vào thông tin của một
sinh viên gồm:
*Mã số sinh viên
*Họ và tên
*Điểm giữa 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%
13
*
Viết chương trình nhập vào 2 thời gian t1 và
t2 (thông tin thời gian gồm: giờ, phút và
giây); tính khoảng cách giữa t1 và t2 (đơn vị
tính bằng giây)
*
*Cách khai báo tương tư ṇhư mảng một chiều
(Kiểu dữ liệu bây giơ ̀ là kiểu dữ liệu có cấu
trúc).
*Cách truy cập phần tửtrong mảng cũng như
truy cập trên mảng một chiều. Nhưng do 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 là phải truy cập đến
thành phần cuối cùng có kiểu là dữliệu cơ bản
(xem lại bảng các kiểu dữliệu cơ bản)
14
*Do kiểu dữliệu có cấu trúc thường chứa rất
nhiều thành phần nên khi viết chương trình
loại này ta cần lưu ý:
*Xây dựng hàm xư l̉y ćho một kiểu cấu trúc.
*Muốn xửly ćho mảng cấu trúc, ta gọi lại
hàm xửly ćho một kiểu cấu trúc đã được
xây dựng bằng cách dùng vòng lặp.
15
16
*
Viết hàm nhập vào mảng các phân số
struct ttPhanSo
{
int tu, mau;
};
typedef struct ttPhanSo PHANSO;
17
*
void NhapPS(PHANSO &ps)
{
cout<<"Nhap tu so: ";
cin>>ps.tu;
cout<<"\nNhap mau so: ";
cin>>ps.mau;
}
18
*
void NhapMangPS(PHANSO dsps[], int n)
{
for(int i=0; i<n; i++)
{
cout<<”\nNhap vao phan so thu "<< i+1<<”: “;
NhapPS(dsps[i]);
}
}
19
*
3.1. Viết chương trình nhập vào mảng các phân số,
cho biết phân số có giá trị lớn nhất trong mảng
3.2. Viết chương trình nhập vào danh sách các mặt
hàng, in ra mặt hàng có xuất xứ “VietNam”, biết
thông tin mặt hàng gồm:
- Mã mặt hàng
- Tên mặt hàng
- Đơn giá
- Xuất xứ