Tải bản đầy đủ (.pdf) (4 trang)

Struct bài tập kiểu cấu trúc lớp 11

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (531.73 KB, 4 trang )

KIỂU CẤU TRÚC TRONG C++
1. Bài toán
Cho 1 danh sách gồm n (2≤n≤105) học sinh, mỗi học sinh cần quản lý các thông tin: họ tên,
ngày sinh (dd/mm/yyyy), quê quán và điểm TB các môn toán, ngữ văn, anh, tin.
Hãy viết 1 chương trình thực hiện các yêu cầu sau:
a. Nhập danh sách n học sinh
b. In ra màn hình thông tin của học sinh có tổng điểm TB cao nhất
c. In ra màn hình danh sách n học sinh sau khi sắp xếp theo thứ tự không tăng của tổng điểm
TB các môn: toán, ngữ văn, anh, tin
d. Sắp xếp danh sách học sinh theo chiều không giảm của tên.
Trong bài toán này, mỗi học sinh là một đối tượng có 7 thông tin khác nhau.
Để giải quyết bài toán này có thể sử dụng 7 mảng 1 chiều để lưu 7 thông tin khác nhau của n
học sinh, tuy nhiên trong quá trình xử lý sẽ gặp nhiều khó khăn. Ví dụ như trong thao tác hoán đổi
2 phần tử cần phải thực hiên với 7 mảng.
Sử dụng kiểu cấu trúc (struct) trong C++ sẽ giải quyết được vấn đề này.
Kiểu cấu trúc thường được dùng để giải quyết các bài toán quản lý đối tượng có nhiều thông
tin khác nhau.
2. Khai báo biến cấu trúc

a. Định nghĩa kiểu cấu trúc
Cú pháp:
struct {
<kiểu 1>
<kiểu 2>

<kiểu k>
};

cấu trúc>
<tên trường 1>;


<tên trường 2>;
<tên trường k>;

Trong đó:
+ struct là từ khóa để định nghĩa kiểu cấu trúc
+ <kiểu cấu trúc> do người dùng từ đặt
+ <tên trường 1>,<tên trường 2>,…,<tên trường k>:mỗi tên trường là một
thông tin của đối tượng
+ <kiểu 1>, <kiểu 2>,…,<kiểu k> là kiểu dữ liệu tương ứng của 1>, <tên trường 2>,…, <tên trường k>


Ví dụ:
struct HOCSINH
{
char hoten[41];
char ngaysinh[11];
char que[101];
float dt,dv,da,dti;
};

b. Khai báo biến cấu trúc
Sử dụng 1 trong 2 cách sau
Cách 1: Khai báo thông qua kiểu cấu trúc đã được định ghĩa
Cú pháp:
<tên kiểu cấu trúc> <danh sách biến cấu trúc>;
Ví dụ: với định nghĩa kiểu HOCSINH ở trên ta có thể khai báo các biến cấu trúc:
HOCSINH hs1,hs2;
Cách 2: Kết hợp ngay trong định nghĩa cấu trúc
struct <kiểu cấu trúc>

{
<kiểu 1> <trường 1>;
<kiểu 2> <trường 2>;

<kiểu k> <trường k>;
} <danh sách biến cấu trúc>;
Ví dụ:
struct HOCSINH
{
char hoten[41];
char ngaysinh[11];
char que[101];
float dt,dv,da,dti;
} hs1, hs2;
3. Tham chiếu đến các thành phần của biến cấu trúc
Sử dụng toán tử dấu chấm (.) theo cú pháp sau để tham chiếu đến 1 trường trong biến cấu
trúc:
<biến cấu trúc>.<tên trường>


Ví dụ:
+ Để tham chiếu đến trường hoten của biến cấu trúc hs1 ta viết: hs1.hoten
+ Để in điểm TB các môn toán, văn, anh, tin của biến cấu trúc hs2 ta viết
cout<Đối với biến con trỏ cấu trúc ta có thể tham chiếu đến 1 trường bằng toán tử ->
Ví dụ ta có khai báo sau:
struct DATE
{
int day;
int month;

int year;
} date, *p;
Các câu lệnh sau là hợp lệ:
date.day=21;
date.month=4;
date.year=2017;
p->day=2;
p->month=2;
p->year=2014;
Chú ý:
+ Phép gán cấu trúc: ta có thể gán (toán tử = ) hai biến cấu trúc cùng kiểu cho nhau chẳng hạn
như:
DATE d1={21,4,207} ,d2;
d2=d1;
+ Để lấy địa chỉ các trường cấu trúc ta sử dụng toán tử &
Ví dụ: cout<<&date.day;
4. Mảng cấu trúc
Mảng cấu trúc được khai báo như sau:
<tên kiểu cấu trúc> <tên mảng>[<kích thước>];
Hoặc
struct <kiểu cấu trúc>
{
<kiểu 1> <trường 1>;
<kiểu 2> <trường 2>;



<kiểu k> <trường k>;
} <danh sách mảng cấu trúc>;
Ví dụ: DATE date[7];

5. Bài tập
Viết chươn trình cho mục 1. Bài toán



×