ĐỐI SỐ CỦA HÀM LÀ CẤU TRÚC5.4.3|

Một phần của tài liệu Kỹ thuật lập trình 2 Bậc cao đẳng (Trang 54 - 59)

5.4.3|

Một cấu trúc có thể được sử dụng để l{m đối số của h{m dưới các dạng sau đ}y:

Tài liệu giảng dạy Trang 49

Là một biến cấu trúc, khi đó tham đối thực sự là một cấu trúc. -

Là một con trỏ cấu trúc, tham đối thực sự l{ địa chỉ của một cấu trúc. -

Là một tham chiếu cấu trúc, tham đối thực sự là một cấu trúc. -

Là một mảng cấu trúc hình thức hoặc con trỏ mảng, tham đối thực sự là -

tên mảng cấu trúc. Ví dụ:

struct DIEM { int nx, ny; }; void xuat1(DIEM xDiem) { … }; void xuat2(DIEM *diem) { … }; void xuat3(DIEM &diem) { … };

void xuat4(DIEM arrDiem[], int n) { … };

VÍ DỤ 5.4.4| 5.4.4|

Ví dụ: Chương trình đơn giản về quản lý sinh viên.

#include <iostream> #include <string> using namespace std;

//Khai báo.

struct NgayThang { // Kiểu ngày tháng

int nNgay; int nThang; int nNam;

};

struct SinhVien { // cấu trúc sinh viên

char szHoTen[25];

NgayThang xNgaySinh;

int nGT; float fDiem;

};

SinhVien xLop[3]; // lớp chứa tối đa 3 sinh viên

/*Hàm in thông tin về sinh viên sử dụng biến cấu trúc l{m đối. Trong lời gọi sử dụng biến cấu trúc để truyền cho hàm.*/

void in(SinhVien x)

{

cout << x.szHoTen << "\t";

cout << x.xNgaySinh.nNgay << "/" << x.xNgaySinh.nThang << "/" <<

x.xNgaySinh.nNam << "\t";

cout << x.nGT << "\t"; cout << x.fDiem << endl; }

/*Hàm nhập thông tin về sinh viên sử dụng con trỏ sinh viên l{m đối. Trong lời gọi sử dụng địa chỉ của một cấu trúc để truyền cho hàm.*/

void nhap(SinhVien *p)

{

Tài liệu giảng dạy Trang 50

cout << "Họ tên: "; cin.getline(p->szHoTen, 25); cout << "Ngày sinh: ";

cin >> (p->xNgaySinh).nNgay >> (p->xNgaySinh).nThang >> (p- >xNgaySinh).nNam;

cout << "Giới tính: "; cin >> (p->nGT); cout << "Điểm: "; cin >> (p->fDiem); }

/*Hàm sửa thông tin về sinh viên sử dụng tham chiếu cấu trúc l{m đối. Trong lời gọi sử dụng biến cấu trúc để truyền cho hàm.*/

void sua(SinhVien &r)

{

int nChon; do {

cout << "1: Sửa họ tên" << endl; cout << "2: Sửa ngày sinh" << endl; cout << "3: Sửa giới tính" << endl; cout << "4: Sửa điểm" << endl; cout << "0: Thôi" << endl; cout << "Sửa (0/1/2/3/4) ?"; cin >> nChon; cin.ignore();

switch (nChon)

{

case 1: cin.getline(r.szHoTen, 25); break;

case 2: cin >> r.xNgaySinh.nNgay >> r.xNgaySinh.nThang >>

r.xNgaySinh.nNam; break;

case 3: cin >> r.nGT; break; case 4: cin >> r.fDiem; break;

}

}while(nChon); }

/*Hàm nhapds nhập thông tin của mọi sinh viên trong mảng, sử dụng con trỏ mảng SinhVien l{m tham đối hình thức. Trong lời gọi sử dụng tên mảng để truyền cho hàm.*/

void nhapds(SinhVien *a)

{

int nSosv = sizeof(xLop) / sizeof(SinhVien); for (int i = 0; i < nSosv; i++)

nhap(&a[i]); }

/*Hàm suads cho phép sửa thông tin của sinh viên trong mảng, sử dụng con trỏ mảng SinhVien l{m tham đối hình thức. Trong lời gọi sử dụng tên mảng để truyền cho hàm.*/

void suads(SinhVien *a)

{

int nChon;

cout << "Chọn sinh viên cần sửa: "; cin >> nChon;

cin.ignore(); sua(a[nChon]); }

Tài liệu giảng dạy Trang 51

/*Hàm inds hiện thông tin của mọi sinh viên trong mảng, sử dụng hằng con trỏ mảng SinhVien l{m tham đối hình thức. Trong lời gọi sử dụng tên mảng để truyền cho hàm.*/

void inds(const SinhVien *a)

{

int nSosv = sizeof(xLop) / sizeof(SinhVien); for (int i = 0; i < nSosv; i++)

in(a[i]); }

/*Hàm main() gọi chạy c|c h{m trên để nhập, in, sửa danh sách sinh viên.*/

void main() { nhapds(xLop); inds(xLop); suads(xLop); inds(xLop); system("pause"); }

Tài liệu giảng dạy Trang 52

6. TẬP TIN

Chương n{y nhằm giúp sinh vie n có the sử dụng kie u dư lie ̣u ta ̣p tin đe lưu trư hoa ̣c đọc dư lie ̣u cho chương tr ̀nh, các bước đe truy ca ̣p ta ̣p tin theo kie u tuàn tự.

Tài liệu giảng dạy Trang 53

Một phần của tài liệu Kỹ thuật lập trình 2 Bậc cao đẳng (Trang 54 - 59)

Tải bản đầy đủ (PDF)

(77 trang)