1. Trang chủ
  2. » Tất cả

Giáo trình ngôn ngữ lập trình c++ phần 2 ts vũ việt vũ

107 10 0

Đ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

Nội dung

Chương KIỂU MẢNG T r o n g chương trước, tìm hiếu việc sử dụng biến để lưu trữ liệu, nhiên biến chì lưu trữ giá trị cụ thể Trên thực tế thường gặp toán cẩn phải xử lý dãy phần từ chẳng hạn dãy số, bảng số, Đe biểu diễn liệu dạng cần đến kiểu liệu C++ kiều màng Hiểu cách đom giản, kiểu màng lưu trữ dãy phần từ có kiểu kể nhớ Trong chương này, độc già cung cấp khái niệm bán cách khai báo sừ dụng mảng ví dụ việc sử dụng màng 6.1 K hái niệm m ảng Đe xử lý liệu giải toán nhằm biến đầu vào thành đầu theo u cầu viết chương trình phải biết cách biểu diễn liệu máy tính Trong chương truớc có khai báo chẳng hạn như: i n t n u m l; d o u b l e num 2; khai báo chi cho phép lưu trữ giá trị đom lẻ Trên thực tế gặp nhiều toán cần biểu diễn dạng bảng chẳng hạn dãy số nguyên tố (bảng 6-1), dãy số nhiệt độ trung bình (bảng 6-2), hay bảng số liệu điểm sinh viên (bảng 6-3), Khi gặp toán phải cần đến kiểu liệu cho phép biểu diễn giá tri theo dạng bảng, C++ cung cấp kiểu liệu mảng Một biến có kiểu màng C++ cho phép lưu trữ dãy hữu hạn phần từ có kiểu liệu liên tục nhớ Có loại màng màng chiều, mảng hai chiều, mảng nhiều chiều, thực tế chi gặp toán sử dụng mảng chiều, hai chiều ba chiều Bàng 6-1 Dãy số nguyên tố 11 13 17 19 Bảng 6-2 Chỉ số nhiệt độ trung bình 30 35.2 33 32 32 29 37 28 115 Bảng 6-3 Bảng số liệu điểm cùa thí sinh To Li Ho Va Su Di TB SV1 6.50 SV2 8 7.50 SV3 8 6.83 SV4 8 9 8.33 SV5 6.67 SV6 0 5.50 SV7 6.33 6.2 M ảng chiều Mảng chiều hay gặp toán thực tế xếp dãy số, liệt kê dãy số theo tiêu chuẩn đó, tìm giá trị lớn nhất, nhỏ dãy số Sau tìm hiểu cách khai báo việc sử dụng viết chương trình 6.2.1 Khai báo mảng chiều Đe khai báo màng chiều ta sử dụng cách sau: < tên < tê n m àng>[số liệ u > < tên thành p h ần ]; m ảng>[số thành ( i) phần] = { d ã y [] = {dãy giá trị}; g iá (iii) Khi khai báo mảng chiều phần tử đuợc đặc trưng bời chi số để xác định phần tử mảng Các số số nguyên đánh 0,1 ,2 , Muốn truy xuất đến phần từ chi cần ghi tên màng kèm theo chi số phần từ Trong cách khai báo ( i ) , ( i i ) , ( i i i ) ta có giải thích sau: kiểu liệu thành phần, thành phần có kiểu giống : Là tên người sừ dụng đặt, phải tuân theo quy tấc đặt tên biến C++ [số thành phần]: số lượng phần tử lớn có mảng 116 Trong khai báo dạng (ii), khởi tạo giá trị cho mảng, số lượng giá trị khơng số thành phần, giá trị cịn lại chương trình khởi bàng Đối với dạng (iii), không cần số thành phần, nhiên giá trị tính số lượng phần tử dãy giá trị khởi tạo Một số ví dụ khai báo mảng sau: Khai báo mảng số nguyên chứa tối đa phần từ ta viết sau: int a [7] ; Khai báo màng số thực chứa tối đa 100 phần tử ta viết: d o u b le b [1 0 ]; Khai báo khởi tạo giá trị chẳng hạn: i n t a [10] = {10, 100, 1000}; Khai báo không cần số lượng phần từ: ■ f l o a t c[ ] = {2, 3, 5, 7, 11} 6.2.2 Nhập xuất liệu cho mảng chiều Để nhập giá trị cho phần tử mảng phải tiến hành nhập phần tử Chẳng hạn muốn nhập giá trị cho biến X thông thường ghi c i n » x , tương tự với mảng để nhập giá trị cho phần tử thứ cho mảng a ghi c i n » a [ ] ; phần tử thứ hai c i n » a [ ] Để nhập liệu cho mảng a chứa n phần tử phải sử dụng vòng lặp để điều khiển chi số nó, chẳng hạn đoạn lệnh sau dùng để nhập liệu cho phần từ mảng a int a [5] ; fo r { ( i= ; i< = ; co ut " « t g - > a ; tg=tg->tiep; } } private: nut *dau; }; int main() { dsd x; X nhap (); c o u t « " D a n h sach ban dau: X inds ; 210 "«endl; x c h e n ( 100) ; cout«"\nDanh sach sau chen: "«endl; X.inds ; return 0; } Ví dụ 9.13 Xóa nút có giá trị bàng k cho trước danh sách liên kết đom trường thơng tin nút chứa giá trị nguyên Giải: Đầu tiên phải tìm xem có hay khơng nút có thường thơng tin k Neu có, chi việc gán trường địa chi nút trỏ vào nút có giá trị k địa chi nút có giá trị k ữỏ vào Sau xóa nhớ cấp phát cho nút k ♦include #include // Xoa mot nut khoi danh sach using namespace std; class dsd{ struct nut { int a; nut *tiep; }; p u b lic : int n; //so luong nut dsd(){ dau = NULL; ) void n h a p O { nut *cuoi; cuoi=NULL; couttiep=NULL; if (dau == NULL) { dau = tg; cuoi=tg; } 211 e lse { cuoi->tiep =tg; cuoi=tg; } } ) void xoa(int y) //xoa nut dau tien sach CO gia tri bang y khoi danh { nut *tg; tg=dau; int dem=0; while (tg!=NULL) { dem=dem +1; if (tg->a ==y) break; tg=tg->tiep; } if (tg->a ==y) {nut *tgl; tgl=dau; if (dem==l) dau=tg->tiep; else while (dem >2) { tgl=tgl->tiep; dem=dem-1; ) tgl->tiep = (tgl->tiep) ->tiep; ) } void i n d s O { nut *tg; tg=dau; int dem=0; c out«tg - > a ; tg=tg->tiep; while (tg !=NULL) { dem++; c o u t « " -> ”« t g - > a ; tg=tg->tiep; 212 } } private: nut *dau; }; i n t main() { dsd x; X nhap (); cout " « t g - > a ; tg=tg->tiep; } } private: nut *p; nut *q; }; int main () { dsd x; X n h a p (); X ghep (); cout 29 -> -> -> -> 10 -> W • „ -> 1000 Bài tập chương Bài Giải thích ý nghĩa câu lệnh sau: a) b) c) d) int a = 5; c o u t« & a ; int *a; int a=4; int &b=a; Bài Trong khai báo sau đây, khai báo khai báo cho biến trỏ? a) b) c) int a; double *p; float m; d) char *ch; e) long *t; Bài Sử dụng hàm sizeofO xác định so byte dành cho khai báo biến nguyên, thục, kí tự máy tính bạn sử dụng Gợi ý: sizeof(*int) cho biết so byte sử dụng cho khai báo trỏ kiểu nguyên Bài Cho mảng có 10 phần tị gồm 11 13 15 17 19 23 Viết chương trình sử dụng kiểu trỏ khai báo lưu trữ giá trị in kết lên hình Bài Việc cấp phát nhớ động với trỏ có tác dụng gì? Cho ví dụ minh họa Bài Thay câu lệnh khai báo biến mảng sau bàng câu lệnh cấp phát nhớ động cho mảng tương ứng: a) int a[100]; c) float c[50]; b) char b[20]; d) double d[ 100]; 216 Bài Sử dụng trỏ để khai báo mảng có 10 phần tử số ngun Tính trung bình cộng số chẵn cùa màng Bài Sử dụng trỏ để khai báo mảng có 10 phần tử số nguyên Đếm, tính tổng, hiển thị phần từ số nguyên tô màng Bài Sử dụng trỏ để khái báo mảng có 10 phần tử số nguyên Đếm, tính tổng, hiển thị phần tử số phương mảng Bài 10 Khai báo cấu trúc phù hạp cho bàng chứa thơng tin sinh viên trường sau đây: Họ tên Mã sổ K15001 David KI 5002 Linda KI 5003 Pieere K15004 Jain KI 5005 Vladimir Ngày sinh 12/02/1997 16/8/1998 7/7/1997 6/9/1998 15/12/1997 G iói tính Nu Nam Nu Nam Nu Điêm tru n g bình 7.9 2.5 6.3 3.9 8.7 Bài 11 Sử dụng cấu trúc khai báo 10 Viết chương trình C++ nhập danh sách gồm n sinh viên vào từ bàn phím, sau xếp sinh viên theo điểm trung bình từ cao đến thấp in kết lên hình Bài 12 Sử dụng câu trúc khai báo 10 Viết chương trình C++ nhập danh sách gôm n sinh viên vào từ bàn phím, sau hiển thị sinh viên có điểm trung bình tị 7.0 đến 8.5 Bai 13 Sử dụng câu trúc khai báo 10 Viết chương trình C++ nhập danh sách gơm n sinh viên vào từ bàn phím, sau hiển thị sinh viện nữ có điểm trung bình đạt loại giỏi (điểm giỏi điểm lớn 8.5) Bai 14 Đinh nghĩa câu trúc có tên n g a ỵ _ t h a n g gồm trường ngày, tháng, năm Bài 15 Định nghĩa cấu trúc s i n h _ v i e n 10, có sử dụng câu trúc n g a ỵ _ t h a n g định nghĩa 14 Yêu cầu nhập danh sách gơm n sinh viên vào từ bàn phím, sau hiển thị sinh viên nam có năm sinh 1998 217 Bài 16 Cho mảng a với phần tử gồm thơng tin họ tên, giới tính, dân tộc, quê quán, hệ số lương, chức vụ Yêu cầu nhập mảng a vào từ bàn phím in phần tị có thơng tin hệ số lương lớn 3.66 Bài 17 Cho mảng s i n h _ v i e n gồm thông tin mã số sinh viên, họ tên, giới tính, dân tộc, năm sinh Yêu cầu nhập màng s i n h _ v i e n vào tị bàn phím hiển thị sinh viên nữ dân tộc nùng mảng Bài 18 Cho mảng m a t_ h a n g gồm thông tin mã số mặt hàng, tên mặt hàng, giá hàng, ngày nhập hàng Yêu cầu nhập mảng m a t_ h a n g vào từ bàn phím, hiển thị mặt hàng có giá nhò 100.000 đồng Bài 19 Viết hàm dayO có ba tham số ngay, thang, nam theo cấu trúc sau: struct n gaỵ_thang { int ngay; int thang; int nam; }; Hàm d a y () trả số ngày từ 01/01/2000 tới ngày tháng, năm số nhập vào từ bàn phím hàm main() truyền cho hàm Yêu cầu hiển thị số ngày tính Bài 20 Viết chương trình C++ chứa danh sách móc nối đom gồm 10 số nguyên, yêu cầu hiển thị số danh sách Bài 21 Tạo danh sách liên kết đơn có n phần tử, thông tin phần tử bao gồm họ tên, năm sinh, dân tộc In lên hình thơng tin nút có năm sinh từ 1990 trờ trước Bài 22 Cho danh sách đơn với nút chứa số nguyên Yêu cầu xóa nút có giá trị số k cho trước in danh sách lên hình Bài 23 Cho danh sách móc nối đơn có nút đầu danh sách trị bời p có n phần tử, phần từ xếp theo thứ tự tăng dần tính tị nút Yêu cầu chèn nút có trường giá trị số k nhập từ bàn phím vào danh sách cho giữ nguyên thứ tự tăng dần có 218 TÀI LIỆU THAM KHẢO [1], Gary J Bronson, C++fo r Engineers and Scientists, Thomson, 2006 [2] Bjame Stroustrup, The C ++ programming language, AddisionWesley, fourth edition, 2013 [3] Balagurusamy, Object Oriented Programming With C++, McGrawH ill,2014 [4] Phạm Văn Ất, Giáo trình C++ lập trình hướng đoi tượng, Nhà xuất Hồng Đức, 2009 [5] Lê Đăng Hưng, Tạ Tuấn Anh, Nguyễn Hữu Đức, Nguyễn Thanh Thủy, Lập trình hướng đoi tượng với C ++, Nhà xuất Khoa học Kỹ thuật, 2005 [6] Dương Tử Cuờng, Ngón ngữ lập trình C++ từ đến hướng đối tượng, Nhà xuất Khoa học Kỹ thuật, 2005 [7], Hoàng Trung Sơn, Bùi Thị Xuyến, Ngơn ngữ lập trình hướng đổi tượng với C++, Nhà xuất Khoa học Kỹ thuật, 2006 219 TS VŨ VIỆT VŨ (Chủ biên) ThS PHÙNG THỊ THU HIÊN GIÁO TRÌNH NGƠN NGỮ LẬP TRÌNH c++ Chịu trách nhiệm xuất bàn: G I Á M Đ Ố C - T Ổ N G BIÊN T Ậ P PHẠM NGỌC KHÔI Biên tập TS N G U Y Ễ N H U Y TIẾN Sứa bán in D Ư Ơ N G LAN ANH Trình bày Họa sỹ bìa N G U Y Ễ N THỊ L Ư Ơ N G ĐẶNG NGUYÊN vũ NHÀ XUÁT BẢN KHOA HỌC VÀ KỸ THUẬT 70 Trần Hưng Đạo - Hoàn Kiếm - Hà Nội ĐT: 04 39423171 Fax: 04 3822 0658 Website: http://www.nxbkhkt.com.vn Email: nxbkhkt@hn.vnn.vn CHI NHÁNH NHÀ XUẤT BẢN KHOA HỌC VÀ KỸ THUẬT 28 Đồng Khời - Quận - TP H Chí Minh ĐT: 08 3822 5062 In 300 bản, khổ 16 X 24 cm, Xí nghiệp in N X B Văn hóa Dân tộc Địa chỉ: 128C/22 Đại La - Hai Bà Trưng - Hà Nội Số xác nhận đăng ký xuất bàn: 257-2017/CXBIPH/1-05/KHKT Quyết định xuất số: 08/QĐ-NXBKHKT, ngày 10 tháng năm 2017 In xong nộp lưu chiểu quý II năm 2017 ISBN: 978-604-67-0835-3 ... chương trình sau: ha[j) so phan tu cua mang: ỉ [2] = ''3 »[3] = & • h [4] = s*[5] = 12 [6] = *[?] = %et qua sTap xep: B 5 8 12 0o - Ví dụ 6.6 Cho mảng a có n phần tử, phần tử số nguyên Yêu cầu: 125 ... thực chương trình sau: 6 .2. 4 M ột số ví dụ khác Ví dụ 6.8 Cho mảng a có n phần từ, phần tử số nguyên Yêu cầu: Nhập n phần từ vào từ bàn phím Sắp xếp mảng cho phần tử chẵn nằm đầu dãy, phần tử lẻ... kí hiệu, Ngơn ngữ C++ cung cấp kiểu liệu xâu kí tự để biểu diễn xử lý liệu dạng Xâu kí tự hiểu dãy kí tự bảng mã ASCII Ví dụ: xâu “Viet Nam”, xâu chứa kí tự số “ 124 58 726 2 626 2”; xâu biểu diễn

Ngày đăng: 23/03/2023, 22:53