Tải bản đầy đủ (.ppt) (22 trang)

Chương 11 Kiểu dữ liệu cấu trúc Nhập môn Ngôn ngữ lập trình C++

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 (345.83 KB, 22 trang )

Lập trình C++
Chương 11: Kiểu dữ liệu cấu trúc

Giảng viên: Lê Thị Hoàng Anh
Email:
1


Kiểu dữ liệu cấu trúc
1. Khái niệm chung về cấu trúc dữ liệu kiểu cấu trúc
1.1. Định nghĩa cấu trúc dữ liệu kiểu cấu trúc
1.2. Các cách khai báo biến kiểu cấu trúc

2. Truy nhập vào cấu trúc
- Truy nhập biến cấu trúc
- Truy nhập mảng cấu trúc

3. Sử dụng cấu trúc
- Nhập dữ liệu vào cấu trúc
- Xuất dữ liệu từ cấu trúc

- Phép gán, so sánh nội dung các cấu trúc
- Bài tập

22


Bài toán đặt vấn đề
Bảng kết quả kiểm tra chất lượng

Trường


(Field)

SBD

Cấu trúc
(Struct)

Họ tên

Tốn

Văn

01

Nguyễn An

10.0

9.0

02

Vũ Ngọc Bình

8.5

5.0

...


.......

...

...

48

Trần Thu Trà

7.0

6.5

49

Đặng Anh Tuấn

5.0

7.5

50

Phan Vân

6.0

4.5


Tổng

Kết quả

Yêu cầu: Nhập vào thông tin của từng học sinh,
tính tổng
và xét kết quả, biết rằng
09/27/22
3
nếu
tổng >=10 thì kết quả là đạt


Định nghĩa cấu trúc dữ liệu kiểu cấu trúc
• Dùng để mơ tả các đối tượng:
- Có cùng một số thuộc tính.
- Các thuộc tính có thể có kiểu dữ liệu khác
nhau

• Các thuộc tính được gọi là các trường
• Mỗi trường đều được đặt tên và được
khai báo kiểu dữ liệu.

4


Các cách khai báo biến kiểu cấu trúc
a. Khai báo gián tiếp
- Khai báo kiểu:

typedef struct {
kiểu trường 1 <tên trường 1>;
kiểu trường 2 < tên trường 2>;

kiểu trường n < tên trường n>;
} <Tên kiểu struct>;
- Khai báo biến: <tên kiểu struct> tên biến struct;

5


Các cách khai báo biến kiểu cấu trúc
a. Khai báo gián tiếp
Ví dụ:
typedef struct{
char title[50];
char author[50];
char subject[100];
int book_id;
} Books;
// Khai báo biến
Books book1,book2;
6


Các cách khai báo biến kiểu cấu trúc
b. Khai báo trực tiếp
struct <Tên kiểu struct>{
kiểu trường 1 <tên trường 1>;
kiểu trường 2 < tên trường 2>;


kiểu trường n < tên trường n>;
} <các biến kiểu struct>; ;//có thể khơng
khai báo biến tại đây.
-Khai báo các biến struct tại vị trí khác:
struct <Tên kiểu struct> <Tên các biến kiểu struct>;

7


Các cách khai báo biến kiểu cấu trúc
b. Khai báo trực tiếp
Ví dụ:
Struct Books {
char title[50];
char author[50];
char subject[100];
int book_id;
} book1, book2;//có thể khơng khai báo
biến tại đây.
// Khai báo thêm các biến khác
struct Books book3,book4;
8


Họ tên

SBD

Tốn


Văn

10.0

9.0

8.5

5.0

...

...

01

Nguyễn An

02

Vũ Ngọc Bình

...

.......

48

Trần Thu Trà


7.0

6.5

49

Đặng Anh Tuấn

5.0

7.5

50

Phan Vân

6.0

4.5

Hocsinh {
int SBD;
string Hoten;
float Toan,Van,Tong;
string Ketqua;
};
struct Hocsinh HS[50];
struct Hocsinh A,B;


Tổng

Kết quả

struct

Khai báo kiểu dữ liệu
cho các trường (field)

Khai báo biến kiểu cấu
trúc (struct)
9


Kiểu dữ liệu cấu trúc
1. Khái niệm chung về cấu trúc dữ liệu kiểu cấu trúc
1.1. Định nghĩa cấu trúc dữ liệu kiểu cấu trúc
1.2. Các cách khai báo biến kiểu cấu trúc

2. Truy nhập vào cấu trúc
- Truy nhập biến cấu trúc
- Truy nhập mảng cấu trúc

3. Sử dụng cấu trúc
- Nhập dữ liệu vào cấu trúc
- Xuất dữ liệu từ cấu trúc

- Phép gán, so sánh nội dung các cấu trúc
- Bài tập


10
10


Truy nhập vào các trường của cấu trúc
• <tên biến cấu trúc> . <tên trường>
• Ví dụ:
Truy cập đến các trường của biến A có kiểu
Hocsinh
A.SBD = 01;
A.Hoten =“Nguyễn An”;
A.Toan= 10.0;
A.Van= 9.0;
A.Tong=A.Toan + A.Van;
11


Truy nhập mảng cấu trúc
• Truy nhập vào mảng cấu trúc
• Ví dụ:
Truy nhập đến các trường của học sinh chỉ số
thứ i trong mảng
HS[i].SBD=i;
HS[i].Hoten=“Trần Kha” ;
HS[i].Toan=7.5;
HS[i].Van= 6.5;
HS[i].Tong=HS[i].Toan+ HS[i].Van;
12



Kiểu dữ liệu cấu trúc
1. Khái niệm chung về cấu trúc dữ liệu kiểu cấu trúc
1.1. Định nghĩa cấu trúc dữ liệu kiểu cấu trúc
1.2. Các cách khai báo biến kiểu cấu trúc

2. Truy nhập vào cấu trúc
- Truy nhập biến cấu trúc
- Truy nhập mảng cấu trúc

3. Sử dụng cấu trúc
- Nhập dữ liệu vào cấu trúc
- Xuất dữ liệu từ cấu trúc

- Phép gán, so sánh nội dung các cấu trúc
- Bài tập

13
13


Nhập thông tin học sinh
Các bước

- Nhập số học sinh

-

Nhập dữ liệu
(các thuộc tính)
của từng cấu

trúc

Thể hiện bằng C++
cout<<“Nhap vao so hoc sinh trong lop: ”;
cin>>n;
for(i=0;icout<<“\n Nhap du lieu cho hoc sinh thu “ << i+1;
cout<<“\n SBD: “; cin>>HS[i].SBD;
cin.ignore();//Xóa bộ nhớ đệm, tránh bị trôi lệnh
cout<<“\n Ho Ten: “; getline( cin,HS[i].Hoten);
cout<<“\n Diem toan: “;cin>>HS[i].Toan;
cout<<“\n Diem van: “;cin>>HS[i].Van;
}
14


Khi i = 0  HS[0].SBD
* Nhập giá trị trường cho SBD của học sinh thứ nhất nằm ở bản ghi
đầu tiên.

* Tương tự như vậy nhập giá trị các trường cịn lại.
SBD
01

ð

Họ và tên
Nguyễn An

Tốn


Văn

10.0

9.0

Q trình nhập kết thúc khi nhập hết dữ liệu cho
bản ghi thứ n.

15


Các thao tác xử lí trong cấu trúc
Tính tổng điểm văn và toán của từng học
sinh trong lớp.
for(i=0;iHS[i].Tong = HS[i].Toan + HS[i].Van; }
Điền chữ “Dat” vào cột kết quả cho những học sinh có
tổng >=10, ngược lại điền chữ “Khong dat”.
for(i=0;i{
if (HS[i].Tong>=10) {HS[i].Ketqua=“Dat”;}
else {HS[i].Ketqua=“Khong dat”;}
}
16


Xuất dữ liệu từ cấu
Các bướctrúc

Thể hiện bằng C++
Thông báo in

cout<<“Bang ket qua kiem tra chat luong\n”;
cout<<“|-SBD-|------------HoTen------------|Toan-|--Van--|--Tong--|----Ketqua-----|”<for(i=0;i
In bảng dữ liệu

cout<cout<cout<cout<cout<cout<}

17


Phép gán
• Có thể gán các biến bản ghi cho nhau:
tg:= HS[i];
HS[i]:=HS[j];
HS[j]:=tg;
• Cũng có thể gán giá trị từng trường của bản
ghi cho nhau
tg.Hoten:=HS[i].Hoten;
HS[i].Hoten:=HS[j].Hoten;
HS[j].Hoten:=tg.Hoten;

18


Phép so sánh
• Sắp xếp thơng tin học sinh theo thứ tự giảm
dần của tổng điểm:
for (i=0;ifor (j=i+1;jif(HS[j].Tong>HS[i].Tong){
TG=HS[i];
HS[i]=HS[j];
HS[j]=TG;
}
}
}
19


Một số phép xử lý trên toàn bản ghi
C++ chỉ cho phép làm việc với toàn bản ghi trong các TH sau:
 Phép gán nội dung hai bản ghi có cùng cấu trúc
HS2 = HS1 : toàn bộ nội dung của HS1 sẽ được gán cho HS2…
Chú ý: Không thể dùng các thao tác sau:
1. Hiển thị lên màn hình hoặc đọc từ bàn phím nội dung của cả một biến
kiểu struct như:
cin>> HS1; hoặc cout<2. So sánh các struct bằng các phép toán quan hệ >, <, >=,<=, các phép toán
số học và logic.
3. Các phép so sánh ==, != với hai biến cùng kiểu struct


20


Bài tập thực hành về bản ghi
1. Cho danh sách lớp :
   --------------------------------------------------------------------------------   Mã sv : Họ tên : Điểm mơn 1:...................:Điểm mơn M: Điểm
TB:
   ---------:----------:-----------------:----------------:-----------------:--------Viết chương trình nhập liệu, tính điểm trung bình của từng sinh
viên rồi in ra  danh sách sinh viên với điểm trung bình.
2. Bài tốn thống kê nhập hàng:
- Mỗi mặt hàng có các dữ liệu như sau: tên hàng, ngày nhập, số
lượng, đơn giá.
- Hãy nhập dữ liệu, sắp xếp và in ra thông tin các mặt hàng theo
thứ tự tăng dần của tên hàng. Sau cùng in tổng tiền đã nhập.
21


Thảo luận

GV: Lê Thị Hoàng Anh

22



×