intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Giaso trình Lập trình C++

Chia sẻ: Nguyễn Tấn Phát | Ngày: | Loại File: PDF | Số trang:49

117
lượt xem
31
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

C++ là ngôn ngữ mạnh, được phát triển từ ngôn ngữ C. Học C++ đem lại nhiều lợi thế cho bạn với khối lượng mã nguồn vào loại lớn nhất trong các ngôn ngữ, cũng như tính tương đồng với hầu hết các ngôn ngữ tựa C (C-like language). Tài liệu này mong muốn giúp bạn có một cái nhìn tổng thể với cách tiếp cận thật ngắn gọn. Cấu trúc sách dựa trên cuốn "C++ in a nutshell" của nhà xuất bản O'Reilly. Tại Việt nam, đã có rất nhiều cuốn sách giới thiệu về C, C++. Trong tài liệu này, chúng tôi không mang...

Chủ đề:
Lưu

Nội dung Text: Giaso trình Lập trình C++

  1. NGUYỄN PHÚ QUẢNG BỘ MÔN TIN HỌC XÂY DỰNG KHOA CÔNG NGHỆ THÔNG TIN – ĐẠI HỌC XÂY DỰNG LẬP TRÌNH C++ Tài liệu lưu hành nội bộ version 0.0.2
  2. Lập trình C++ Nguyễn Phú Quảng Mục lục I. MỞ ĐẦU.............................................................................................................................4 I.1. Môi trường phát triển.................................................................................................................... ..........4 I.2. Chương trình đầu tiên...................................................................................................... ......................4 I.3. Input & Output................................................................................................................ ........................5 II. NGÔN NGỮ.......................................................................................................................5 II.1. Cơ bản về ngôn ngữ.................................................................................................. ...........................5 II.2. Kiểu................................................................................................................................... ....................5 II.3. Chuyển đổi giữa các kiểu...................................................................................................... ................7 II.4. Biểu thức & toán tử...................................................................................................... .........................7 III. LỆNH................................................................................................................................9 . III.1. Lệnh dạng biểu thức.......................................................................................................................... ...9 III.2. Khối lệnh.................................................................................................................. ............................9 III.3. Lệnh rẽ nhánh.............................................................................................................. ........................9 III.4. Vòng lặp for...................................................................................................................... ..................10 III.5. Vòng lặp while................................................................................................................. ...................13 III.6. Vòng lặp do...while........................................................................................................ .....................13 III.7. Nhảy không điều kiện......................................................................................................... ................13 IV. HÀM.............................................................................................................. .................13 . IV.1. Định nghĩa hàm................................................................................................................. .................13 IV.2. Ví dụ khai báo hàm........................................................................................................................... ..14 IV.3. Khi nào sử dụng hàm...................................................................................................... ...................14 IV.4. Hàm được gọi như thế nào?........................................................................................ ......................14 IV.5. Hàm gọi đệ quy........................................................................................................... .......................15 V. MẢNG..............................................................................................................................17 V.1. Định nghĩa............................................................................................................................ ...............17 V.2. Truy cập phần tử của mảng............................................................................................................. ....17 V.3. Khởi tạo mảng......................................................................................................................... ............17 V.4. Mảng nhiều chiều.............................................................................................................. ..................17 V.5. Sử dụng mảng làm tham số của hàm................................................................................................ ..17 VI. CON TRỎ.......................................................................................................................17 VI.1. Khai báo con trỏ................................................................................................................... ..............17 VI.2. Các toán tử trên con trỏ............................................................................................... ......................17 VI.3. Con trỏ và mảng.............................................................................................................................. ...17 VI.4. Con trỏ hàm............................................................................................................... ........................17 VII. STRUCT........................................................................................................................17 VII.1. Định nghĩa Struct.................................................................................................... ..........................17 VII.2. Khai báo biến................................................................................................................. ...................18 VII.3. Truy cập trường...................................................................................................... ..........................18 VIII. Stream..................................................................................................................... ....18 . VIII.1. File stream............................................................................................................... ........................18 VIII.2. String stream............................................................................................................................ ........19 VIII.3. Ghi có định dạng............................................................................................................... ...............19 IX. KIỂU NGƯỜI DÙNG ĐỊNH NGHĨA...............................................................................21 X. CẤP PHÁT BỘ NHỚ ĐỘNG...........................................................................................21 2
  3. Lập trình C++ Nguyễn Phú Quảng XI. LỚP................................................................................................................................21 XII. MẪU........................................................................................................................ ......21 . XIII. THƯ VIỆN CHUẨN......................................................................................................21 XIII.1. Các khái niệm......................................................................................................... .........................21 XIII.2. Kiểu vector..................................................................................................................... ..................22 XIII.3. Kiểu string...................................................................................................................... ..................26 XIII.4. Kiểu list (danh sách).................................................................................................................... .....29 XIII.5. Kiểu set (tập hợp)................................................................................................. ...........................32 XIII.6. Kiểu map (ánh xạ).................................................................................................................. ..........32 XIII.7. Kiểu hash_map (ánh xạ dùng mảng băm)................................................................ .......................34 XIII.8. Kiểu hash_set (tập hợp)............................................................................................................ .......35 XIII.9. Thuật toán (Algorithm).................................................................................................................... ..35 XIV. GIẢI MỘT SỐ BÀI TOÁN BẰNG STL.........................................................................43 XIV.1. Quản lý sinh viên............................................................................................................................ ..43 XIV.2. Rào đất.................................................................................................................. ..........................45 XIV.3. Robot..................................................................................................................... ..........................46 XIV.4. Dijsktra.............................................................................................................................. ...............47 XIV.5. Hợp diện tích hình chữ nhật............................................................................................................ .47 XV. INPUT VÀ OUTPUT......................................................................................................49 3
  4. Lập trình C++ Nguyễn Phú Quảng I. MỞ ĐẦU C++ là ngôn ngữ mạnh, được phát triển từ ngôn ngữ C. Học C++ đem lại nhiều lợi thế cho bạn với khối lượng mã nguồn vào loại lớn nhất trong các ngôn ngữ, cũng như tính tương đồng với hầu hết các ngôn ngữ tựa C (C-like language). Tài liệu này mong muốn giúp bạn có một cái nhìn tổng thể với cách tiếp cận thật ngắn gọn. Cấu trúc sách dựa trên cuốn "C++ in a nutshell" của nhà xuất bản O'Reilly. Tại Việt nam, đã có rất nhiều cuốn sách giới thiệu về C, C++. Trong tài liệu này, chúng tôi không mang tham vọng xây dựng một giáo trình về C++ mà chỉ là những đúc kết kinh nghiệm mà chúng tôi đã trực tiếp làm việc với C++, nhất là trong những bài toán thiên về giải thuật. Mọi góp ý xin gửi về địa chỉ: nguyenphuquang@gmail.com. Xin chân thành cảm ơn mọi đóng góp của các bạn. I.1. Môi trường phát triển Để thuận tiện cho việc học ngôn ngữ, chúng tôi xin giới thiệu 2 môi trường quen thuộc để bạn có thể thực hành lập trình C++. Microsoft Visual C++ (6.0, 7.0, 7.1): phần mềm này nằm trong bộ phần mềm Microsoft Visual Studio. DevC++ 5.0: Bạn có thể tải miễn phí từ địa chỉ http://www.bloodshed.net/devcpp.html, chúng tôi khuyến khích các bạn sử dụng phần mềm miễn phí này. Toàn bộ chương trình minh họa đều có thể chạy trên cả 2 môi trường VC++ và DevC. I.2. Chương trình đầu tiên Mở DevC, bạn tạo file mới, gõ vào đoạn chương trình dưới đây và lưu lại (tất nhiên là không gõ vào số dòng, trong tất cả các chương trình minh họa, chúng tôi sử dụng số dòng để giải thích cho chương trình). Sau đó bấm Ctrl+F9 để dịch chương trình, bấm Ctrl+F10 để chạy chương trình, bạn sẽ thấy một màn hình màu đen và dòng chữ "Hello every body!", khi bạn gõ 1 phím bất kỳ thì màn hình màu đen sẽ đóng lại. 01 #include 02 #include 03 04 using namespace std; 05 int main() { 06 cout
  5. Lập trình C++ Nguyễn Phú Quảng Dòng 07: getchar() là hàm giúp chương trình dừng lại và đợi người dùng gõ một phím bất kỳ. Thực chất, trong ví dụ này không cần phải dừng chương trình. Nhưng do đặc tính của môi trường DevC và VC là màn hình output sẽ biến mất sau khi chương trình chạy xong, do đó chúng tôi đưa thêm lệnh này để dừng chương trình lại, giúp các bạn quan sát thấy xâu ký tự in trên màn hình. I.3. Input & Output II. NGÔN NGỮ II.1. Cơ bản về ngôn ngữ Ngôn ngữ lập có nhiều điểm tương tự với ngôn ngữ tự nhiên - Chứa một tập từ khóa (giống với từ vựng của ngôn ngữ tự nhiên) - Chứa một loạt các quy tắc kết hợp các từ khóa, toán tử với nhau (giống với ngữ pháp trong ngôn ngữ tự nhiên) Khi bạn đã thạo một ngôn ngữ lập trình, việc học một ngôn ngữ khác là tương đối đơn giản (cũng như bạn đã học tiếng Anh thì có thể học tiếng Pháp rất nhanh vì hai ngôn ngữ này có nhiều từ tương đồng với nhau). Việc học ngôn C++ (cũng như học tiếng Anh) đem lại cho bạn lợi thế rất lớn vì đây là ngôn ngữ được sử dụng phổ biến nhất. Hơn thế nữa có rất nhiều các ngôn ngữ lập trình khác được xây dựng trên cơ sở cú pháp của C++ (gọi là các ngôn ngữ giống-C – C-like), do đó bạn có thể tiếp cận rất nhanh với các ngôn ngữ này nếu đã thông thạo với C++. II.2. Kiểu II.2.1. Các kiểu cơ bản Phần này trình bày các kiểu dữ liệu cơ bản của C++. Trong giới hạn của tài liệu này, tôi không trình bày về con trỏ. Mặc dù con trỏ là một trong nhưng đặc điểm nổi bật của C++ nhưng tính phức tạp của con trỏ dễ gây nhầm lẫn cho người mới làm quen. Chúng ta sẽ giải quyết các bài toán trên C++ mà không hoặc hạn chế tối đa sử dụng con trỏ. a. Kiểu số • Số nguyên - Kiểu char (1 byte): (-128 đến 127) - Kiểu short (2 byte): (-32768 đến 32767) - Kiểu int, long (4 byte): (-2 tỷ đến 2 tỷ) - Tất cả các kiểu trên, nếu bổ sung unsign : o unsign char: o unsign short: o unsign int: - Việc lựa chọn kiểu dữ liệu trong bài toán phục thuộc vào vùng giá trị của biến. Khoảng giá trị càng lớn, biến càng chiếm nhiều bộ nhớ. Chương trình C++ dịch trên DevC hoạt động trên môi trường Windows thường là hệ điều hành 32 bit, số nguyên được sử dụng phổ biến nhất là kiểu int. 5
  6. Lập trình C++ Nguyễn Phú Quảng - Ví dụ char a; int b = 20; long c = 30; unsign char d = 200; • Số thực - float (4 byte): Số thực độ chính xác đơn. - double (8 byte): Số thực độ chính xác kép. • Logic - bool: có 2 giá trị là true và false II.2.2. Các kiểu phức a. Kiểu mảng - Mảng là một dãy các phần tử cùng kiểu được sắp liên tiếp nhau trong bộ nhớ - Các phần tử được phân biệt với nhau bởi chỉ số, là các số tuần tự bắt đầu từ 0 - Ví dụ int a[100]; // Khai báo mảng gồm 100 số int // a[0] là 1 số int, phần tử đầu tiên của mảng // a[1] là 1 số int, phần tử thứ 2 của mảng // a[99] là 1 số int, phần tử cuối cùng của mảng long b[10]; // Khai báo mảng gồm 10 số long - Mảng được khai báo theo ví dụ trên là mảng 1 chiều. Chiều của mảng là số chỉ số sử dụng để xác định một phần tử (giống như hệ tọa độ 1 chiều, 2 chiều, 3 chiều) - Ví dụ khai bao và sử dụng mảng nhiều chiều như sau int a[3][3]; // Khai báo a là mảng 2 chiều (giống như 1 bảng) // a[0] là một mảng 1 chiều gồm 3 số nguyên (giống như 1 dòng của bảng) // a[0][0] là số int đầu tiên của dòng // a[0][1] là số int thứ 2 của dòng // a[0][2] là số int cuối cùng của dòng // a[1] là dòng thứ 2 của bảng // a[2] là dòng cuối cùng của bảng a[1][1] = 5; // Gán giá trị của số nguyên ở dòng 1, cột 1 là 5 b. Kiểu struct Struct là kiểu dữ liệu cho phép bạn tập hợp nhiều thành phần vào trong cùng một biến. Lấy ví dụ thông tin của một điểm gồm 2 tọa độ x, y, thông tin của một đoạn thẳng gồm điểm đầu và điểm cuối. Struct là kiểu dữ liệu, do đó bạn phải khai báo kiểu dữ liệu đó bằng lệnh typedef rồi mới có thể khai báo được các biến thuộc kiểu này. Cú pháp khai báo struct như sau: struct { // Khai báo kiểu struct ; // Trường của struct (giống khai báo biến) , ; }; , ; // Khai báo biến thuộc kiểu mới tạo ra . = ; // Truy cập trường dữ liệu của biến Các thành phần khai báo bên trong struct được gọi là trường (field). Một struct gồm nhiều trường, biến thuộc kiểu struct 6
  7. Lập trình C++ Nguyễn Phú Quảng II.2.3. Các kiểu stl a. Kiểu string b. Kiểu vector c. Kiểu vector II.3. Chuyển đổi giữa các kiểu II.4. Biểu thức & toán tử II.4.1. Biểu thức Biểu thức là kết hợp của các toán tử và toán hạng. Toán hạng có thể là các số hoặc các biến. II.4.2. Toán tử a. Các phép toán số học - Phép cộng + o a+b - Phép trừ - o a-b - Phép nhân * o a*b - Phép chia /: Chú ý trong phép chia o Nếu cả 2 toán hạng cùng là số nguyên thì phép chia là chia nguyên 10 / 3 cho giá trị 3  o Nếu 1 trong 2 toán hạng là số thực thì phép chia là chia số thực 10.0 / 3 cho giá trị 3.3333333  - Phép lấy dư: % o 10 % 3 cho giá trị 1 b. Các phép toán so sánh - So sánh bằng == o 10 == 3 cho giá trị false o 10 == 10 cho giá trị true - So sánh khác != o 10 != 3 cho giá trị true 7
  8. Lập trình C++ Nguyễn Phú Quảng - So sánh lớn hơn > - So sánh nhỏ hơn < - So sánh lớn hơn hay bằng >= - So sánh nhỏ hơn hay bằng 4: cho giá trị false o 10>3 && 5>4: cho giá trị true - Phép toán or || o 10==3 || 5>4: cho giá trị true o 10==3 || 5
  9. Lập trình C++ Nguyễn Phú Quảng III. LỆNH III.1. Lệnh dạng biểu thức III.1.1. Phép gán Tên biến = Biểu thức; - Biểu thức có thể là 1 hằng số - Biểu thức có thể là 1 biến - Biểu thức có thể là biến và hằng số kết hợp với nhau bởi toán tử III.2. Khối lệnh Các khối lệnh để phân chương trình thành nhiều khối con. Việc phân khối giúp chương trình rõ ràng, dễ hiểu hơn theo nguyên tắc chia để trị. Một khối lệnh được đặt trong cặp ngoặc { } và được coi như một lệnh đơn. C++ cho phép khai báo biến tại bất kỳ nơi nào trong chương trình. Biến khai báo trong khối lệnh nào thì chỉ tồn tại trong khối chương trình đó (biến khai báo trong khối chương trình trong không thể sử dụng trong khối chương trình ngoài). Ví dụ về việc sử dụng các khối chương trình. if (a>b) { int m; // Biến m khai báo trong khối if (a>b) m = 1; // m có thể được sử dụng tại cùng khối chương trình if (d>e) { m = 5; // m có thể được sử dụng tại khối chương trình bên trong } } else { m = 10; // m không thể sử dụng được ở khối chương trình ngoài } III.3. Lệnh rẽ nhánh Lệnh if sử dụng để có hay không thực hiện một đoạn chương trình theo một điều kiện (gọi là rẽ nhánh). Lệnh if gồm 2 dạng: rút gọn và đầy đủ - Dạng rút gọn: Nếu đúng thì thực hiện if () { } o có thể là Một biểu thức logic  Một biểu thức kiểu số (số khác 0 được coi là đúng, bằng 0 là sai)  o Nếu chỉ là 1 lệnh đơn, bạn không cần để trong khối chương trình bằng cặp ngoặc {}. Tuy nhiên, việc này không được khuyến khích. - Dạng đầy đủ: Nếu là đúng thì thực hiện , ngược lại thực hiện if () { ; } else { ; } If là một cấu trúc điều khiển được sử dụng phổ biến nhất. Đoạn chương trình sau sẽ nêu ví dụ sử dụng lệnh if. 9
  10. Lập trình C++ Nguyễn Phú Quảng #include #include using namespace std; int main () { int gio; cout > gio; if (gio
  11. Lập trình C++ Nguyễn Phú Quảng Thực hiện lệnh thay đổi i++ (i tăng từ 1 thành 2)  Lặp lại bước kiểm tra  - Kiểm tra điều kiện (i
  12. Lập trình C++ Nguyễn Phú Quảng Vòng lặp for của C++ có thể thay thế vòng lặp for... downto của Pascal bằng cách thay đổi điều kiện kiểm tra và lệnh tăng thành lệnh giảm. Ví dụ sau viết ra 100 số từ 990, 980, 970 đến 0 #include #include #include using namespace std; int main () { for (int i=990; i>=0; i-=10) { cout
  13. Lập trình C++ Nguyễn Phú Quảng III.5. Vòng lặp while Cú pháp while () { ; } Trong khi còn đúng thì thực hiện Vòng lặp while ít khi được sử dụng vì bạn có thể sử dụng vòng lặp for thay cho while. Vòng lặp while và do... while đều có thể sử dụng break và continue tương tự vòng lặp III.6. Vòng lặp do...while do { ; } while (); Thực hiện cho đến khi sai. III.7. Nhảy không điều kiện Lệnh goto sử dụng để nhảy đến một vị trí trong chương trình. Lệnh goto phá vỡ tính cấu trúc của chương trình nhưng nếu biết tận dụng sẽ làm giảm độ phức tạp của chương trình. Vẫn với ví dụ viết ra các số nguyên tố, bạn có thể chỉnh sửa chương trình cho đơn giản hơn bằng cách sử dụng goto: #include #include #include using namespace std; int main() { int n = 100; int i, j, m; for (i=1; i
  14. Lập trình C++ Nguyễn Phú Quảng - : Tên của hàm (quy ước giống như đặt tên biến – không có dấu cách, không chứa ký tự đặc biệt) - Nếu hàm có kiểu void, có thể dùng lệnh return để thoát khỏi hàm - Nếu hàm có kiểu khác void, bạn phải trả về giá trị tương ứng với kiểu (ví dụ kiểu int thì phải là return 1) - Nếu không có tham số, bạn vẫn phải có cặp ngoặc () Danh sách tham số được liệt kê như sau: , ,... IV.2. Ví dụ khai báo hàm #include #include #include using namespace std; // Hàm tính tổng của 2 số // Có 2 tham số a, b (kiểu int) // Trả về tổng của a và b (kiểu int) int Tong(int a, int b) { return a+b; } int main() { cout
  15. Lập trình C++ Nguyễn Phú Quảng - Sau khi thoát khỏi hàm, vùng bộ nhớ cấp cho các tham số và biến trong hàm được khôi phục, stack trở về trạng thái cũ - Các hàm có thể gọi lẫn nhau, mỗi lần gọi hàm stack lại đầy thêm. Stack chứa thông tin thứ tự các hàm gọi nhau và các biến trong hàm đó (thông tin này gọi là Call stack) IV.5. Hàm gọi đệ quy Đệ quy là cơ chế một hàm tự gọi chính nó. Nhờ sử dụng stack, mỗi hàm sẽ có vùng nhớ lưu giữ tham số và biến của riêng nó. Các vùng nhớ này được sắp xếp trên stack (hàm gọi cuối cùng sẽ được lấy ra trước tiên). Xét ví dụ kinh điển sau: #include #include #include using namespace std; // Hàm tính giai thừa của một số // Sử dụng công thức truy hồi n! = n * (n-1)! // Hàm GiaiThua(n) được tính từ hàm GiaiThua(n-1) // Tức là hàm GiaiThua tự gọi lại chính nó (đệ quy) int GiaiThua(int n) { if (n>=1) return n*GiaiThua(n-1); else return 1; } int main() { int n; cout > n; cout =1 S  Chúng ta hãy thử phân tích quá trình hoạt động của các hàm khi gọi đệ quy qua bảng sau 15
  16. Lập trình C++ Nguyễn Phú Quảng Bước Mô tả Stack main() Chương trình bắt đầu hoạt động từ hàm main() gọi GiaiThua(4) Hàm main() thực hiện lời gọi hàm GiaiThua(4) 4 gọi GiaiThua(3) Hàm GiaiThua(4) gọi hàm GiaiThua(3) 3 4 gọi GiaiThua(2) Hàm GiaiThua(3) gọi hàm GiaiThua(2) 2 3 4 gọi GiaiThua(1) Hàm GiaiThua(2) gọi hàm GiaiThua(1) 1 2 3 4 Trả về giá trị n=1, hàm GiaiThua(1) không của gọi đệ quy mà trả về giá trị 1, 1 GiaiThua(1) sau đó thoát ra, trở về hàm đã gọi nó (là hàm GiaiThua(2)) 2 3 4 Trả về giá trị n=2, Tính n*GiaiThua(1) = 2*1 của =2 2 GiaiThua(2) Trả về giá trị 2 3 Thoát trở về hàm đã gọi hàm này (là hàm GiaiThua(3)) 4 Trả về giá trị n=3, Tính n*GiaiThua(2) = 3*2 của =6 3 GiaiThua(3) Trả về giá trị 6 4 Thoát trở về hàm đã gọi hàm này (là hàm GiaiThua(4)) Trả về giá trị n=4, tính n*GiaiThua(3) = 4*6 = của 24 4 GiaiThua(4) Trả về giá trị 24 16
  17. Lập trình C++ Nguyễn Phú Quảng Thoát trở về hàm đã gọi hàm này (là hàm main()) V. MẢNG V.1. Định nghĩa V.2. Truy cập phần tử của mảng V.3. Khởi tạo mảng V.4. Mảng nhiều chiều V.5. Sử dụng mảng làm tham số của hàm VI. CON TRỎ Trong máy tính, bộ nhớ được sắp xếp trong các ô liên tiếp nhau, mỗi ô chiếm 1 byte. Các ô nhớ này phân biệt với nhau bởi địa chỉ (gần giống các phần tử của mảng phân biệt với nhau bởi chỉ số). Mỗi biến, tùy theo kích thước sẽ chiếm 1 hoặc nhiều ô nhớ liên tục trong bộ nhớ. Địa chỉ của biến là địa chỉ của ô nhớ đầu tiên của biến đó. Trong C++, có một loại biến lưu lại địa chỉ của các ô nhớ, các biến này được gọi là con trỏ. Con trỏ cũng là biến, có kích thước 4 byte, lưu 1 số là địa chỉ của các biến. VI.1. Khai báo con trỏ VI.2. Các toán tử trên con trỏ VI.3. Con trỏ và mảng VI.4. Con trỏ hàm VII. STRUCT VII.1. Định nghĩa Struct 17
  18. Lập trình C++ Nguyễn Phú Quảng VII.2. Khai báo biến VII.3. Truy cập trường VIII. Stream VIII.1. File stream VIII.1.1. Ghi file Để ghi dữ liệu ra file text, bạn sử dụng kiểu dữ liệu ofstream (o = output, f = file). Kiểu dữ liệu này yêu cầu bạn phải khai báo header là . iostream có các phương thức sau: - f.open("tên file"): Mở file - f.close(): Đóng file #include #include using namespace std; int main () { ofstream myfile; myfile.open ("c:/vidu.txt"); myfile b >> c >> d >> e; myfile.close(); cout
  19. Lập trình C++ Nguyễn Phú Quảng - f.get(): Đọc 1 ký tự trên file: Sử dụng để đọc ký tự xuống dòng sau khi dùng các toán tử dẫn hướng từ stream ra biến (tham khảo ví dụ). Trả về ký tự vừa đọc được. - getline(f, str): Đọc một dòng từ file (vào xâu ký tự str) - Sau khi đọc 1 dòng từ file, bạn có thể dùng istringstream để đọc dữ liệu từ luồng xâu ký tự vào các biến. (tham khảo ví dụ) /* Đọc vào từ file readfile.txt với cấu trúc Dòng 1: Số dòng của mảng 2 chiều Các dòng tiếp theo, mỗi dòng là các phần tử của mảng 2 chiều (lưu ý, số phần tử mỗi dòng có thể khác nhau, không có số ghi số lượng phần tử ở đầu) */ #include #include // header cho đọc ghi file #include // header cho đọc ghi trên string #include #include using namespace std; int main () { int n; typedef vector dong; // Kiểu dòng (mảng số nguyên) vector a; // Mảng 2 chiều (mảng các dòng) string line; int b; ifstream f("readfile.txt"); // Mở file f >> n; f.get(); // Đọc số dòng, f.get(): xuống dòng a.resize(n); // Đặt số dòng cho mảng 2 chiều for (int i=0; i> b) a[i].push_back( b ); // Đọc từng số từ stream fs } f.close(); // Đóng file for (int i=0; i
  20. Lập trình C++ Nguyễn Phú Quảng C++ cũng cho phép làm tương tự với thư viện iomanip (viết tắt của manipulate). Để sử dụng thư viện này, bạn khai báo #include VIII.3.1. Ghi với số lượng dấu phẩy xác định Nếu muốn ghi số thực với 3 chữ số sau dấu phẩy, bạn sử dụng lệnh setprecision. Chú ý setpresision(n) sẽ ghi ra n-1 chữ số sau dấu phẩy (tính cả dấu chấm là n chữ). #include #include #include using namespace std; int main () { cout
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2