1. Trang chủ
  2. » Công Nghệ Thông Tin

Bài giảng C - Kiểu cấu trúc

16 346 1
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Kiểu cấu trúc
Trường học Trường Đại Học Công Nghệ Thông Tin
Chuyên ngành Công Nghệ Thông Tin
Thể loại Bài giảng
Định dạng
Số trang 16
Dung lượng 86,5 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Bài giảng C - Kiểu cấu trúc

Trang 1

LẬP TRÌNH C++

§9 Kiểu cấu trúc bản ghi

Trang 2

I Khai báo kiểu bản ghi

Cú pháp

struct < tên_cấu_trúc >

{

Các kiểu dữ liệu thành phần ;

};

Khai báo biến :

struct < tên_cấu_trúc > < tên_biến > ;

 Ví dụ: Kiểu dữ liệu DATE gồm các thành phần:

Thứ (thu): kiểu chuỗi

Ngày (ngay): kiểu số nguyên 1 byte

Tháng (thang): kiểu số nguyên 1 byte

Năm (nam): kiểu số nguyên 2 bytes

Trang 3

Ta định nghĩa DATE như sau:

struct DATE

{

string thu;

unsigned char ngay;

unsigned char thang;

unsigned int nam;

};

DATE x ; // Khai bao bien x co kieu du lieu DATE

Hoặc : struct DATE x ;

Để truy xuất một thành phần dữ liệu :

< Tên cấu trúc >.< Biến thành phần >;

DATE x ; // khai bao bien x kieu DATE

x.ngay = 5 ; // gan ngay bang 5

Trang 4

Bài tập :

1. đọc và in ra thứ, ngày, tháng, năm

#include <iostream>

#include <string>

#include <algorithm>

using namespace std;

struct DATE

{

string thu;

unsigned char ngay;

unsigned char thang;

unsigned int nam;

};

struct DATE d;

Trang 5

void main()

{

cout<<"Cho thu : ";

getline(cin,d.thu);

cout<<"Cho ngay : ";

cin>>d.ngay;

cout<<"Cho thang : ";

cin>>d.thang;

cout<<"Cho nam : ";

cin>>d.nam;

cout<<"Du lieu vua doc vao la : "<<endl;

cout<<"Thu : "<<d.thu<<endl;

cout<<"Ngay : "<<d.ngay<<endl;

cout<<"Thang : "<<d.thang<<endl;

cout<<"Nam : "<<d.nam<<endl;

}

* Cách 2 : dùng hàm đọc vào và in ra ngày tháng năm

Trang 6

2 Đọc vào và in ra thông tin của một thí sinh thi đại học gồm: SBD, hoten, gioitinh, dtoan, dly, dhoa (dùng hàm)

Ta có thể khai báo kiểu thí sinh như sau:

struct THISINH

{ string SBD;

string hoten;

string gt;

double dtoan;

double dly;

double dhoa;

};

struct THISINH ts;

Trang 7

Định nghĩa kiểu dữ liệu của học sinh HOCSINH gồm:

Mã số học sinh (MSHS): kiểu chuỗi

Họ tên (hoten): kiểu chuỗi

Ngày tháng năm sinh (ngaysinh): kiểu DATE

Địa chỉ (diachi): kiểu chuỗi

Giới tính (gt): kiểu chuỗi

Điểm trung bình (diemtb): số thực

Ta định nghĩa kiểu HOCSINH có ngày sinh là kiểu DATE

như sau:

struct DATE

{

unsigned int ngay;

unsigned int thang;

unsigned int nam;

};

Trang 8

struct HOCSINH

{

string MSHS;

string hoten;

struct DATE ngaysinh;

string diachi;

string gt;

double diemtb;

};

HOCSINH hs; // khai bao bien hs kieu HOCSINH

Muốn biết hs sinh vào tháng mấy ta phải truy cập như sau: (hs.ngaysinh).thang;

# Khi định nghĩa kiểu dữ liệu struct lồng nhau, ta cần lưu ý: Kiểu dữ liệu được sử dụng phải khai báo phía trên

Bài tập :

đọc vào và in ra thông tin cua một học sinh như trên bằng

2 cách : cách 1: đọc in trực tiếp; cách 2 : thông qua 2 hàm

Trang 9

#include <iostream>

#include <string>

#include <conio.h>

#include <algorithm>

using namespace std;

struct DATE

{ unsigned int ngay;

unsigned int thang;

unsigned int nam;

};

struct HOCSINH

{ string MSHS;

string hoten;

struct DATE ngaysinh;

string diachi;

string gt;

double diemtb;

};

Trang 10

HOCSINH hs;

void docns(DATE &d)

{

cout<<"Cho ngay : "; cin>>d.ngay;

cout<<"Cho thang : "; cin>>d.thang;

cout<<"Cho nam : "; cin>>d.nam;

}

void dochs(HOCSINH &hs)

{

cout<<"Cho MSHS : "; getline(cin,hs.MSHS);getchar();

cout<<"Cho ho ten : "; getline(cin,hs.hoten); getchar();

cout<<"Vao ngay thang nam sinh : "<<endl;

docns(hs.ngaysinh); getchar();

cout<<"Cho dia chi : "; getline(cin,hs.diachi); getchar();

cout<<"Cho gioi tinh : "; getline(cin,hs.gt); getchar();

cout<<"Cho diem trung binh : "; cin>>hs.diemtb;

Trang 11

void inns(DATE d)

cout<<"thang : "<<d.thang<<endl;

cout<<"nam : "<<d.nam<<endl;

}

void inhs(HOCSINH hs)

cout<<"ho ten : "<<hs.hoten<<endl;

cout<<"ngay thang nam sinh : "<<endl;

inns(hs.ngaysinh);

cout<<"dia chi : "<<hs.diachi<<endl;

cout<<"gioi tinh : "<<hs.gt<<endl;

cout<<"diem trung binh : "<<hs.diemtb<<endl;

}

void main()

cout<<"Du lieu vua doc vao la : "<<endl; inhs(hs);

}

Trang 12

III Mảng cấu trúc bản ghi

ma trận (Kiểu dữ liệu bây giờ là kiểu dữ liệu có

cấu trúc)

cập trên mảng một chiều hay ma trận 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

Trang 13

Ví dụ :

struct THISINH

{ string SBD;

string hoten;

string gt;

double dtoan;

double dly;

double dhoa;

};

struct THISINH ds[100], ts, ts1, ts2;

Trong chương trinh có thể gán : ts1=ts2;

Phep so sanh : ts1!=ts2; ts1==ts2;

Bài tập :

Đọc vào một danh sách thí sinh thi đại học, sắp xếp theo thứ tự điểm giảm dần và in ra.

Trang 14

IV Bài tập về nhà

trừ, nhân, chia số phức.

trù, nhân, chia, tối giản phân số.

Đơn vị tính, đơn giá, số lượng Sau đó đọc vào một danh sách hàng hóa và in ra theo thứ tự số tiền tăng dần, biết rằng số tiền = số lượng * đơn giá

Trang 15

#include <conio.h>

#include <iostream>

using namespace std;

struct sophuc

{

double x,y;

};

void docsp(sophuc &u)

{

cout<<"Cho phan thuc : "; cin>>u.x;

cout<<"Cho phan ao : "; cin>>u.y;

}

sophuc cong(sophuc u, sophuc v)

{

sophuc w;

w.x=u.x+v.x;

w.y=u.y+v.y;

return w;

}

Trang 16

void insp(sophuc u)

{

if (u.y>0) cout<<u.x<<"+i*"<<u.y;

else if (u.y<0) cout<<u.x<<"-i*"<<abs(u.y);

else cout<<u.x;

}

void main()

{

sophuc u,v;

cout<<"Cho so phuc thu nhat :"<<endl; docsp(u);

cout<<"Cho so phuc thu hai :"<<endl; docsp(v);

cout<<"So phuc u="; insp(u); cout<<endl;

cout<<"So phuc v="; insp(v); cout<<endl;

cout<<"Tong u+v="; insp(cong(u,v)); cout<<endl;

}

Ngày đăng: 14/11/2012, 15:35

TỪ KHÓA LIÊN QUAN

w