Chương 1, tài liệu chuẩn code trước khi thực hiện bài tập. - Sử dụng internet để tra cứu. - Trình bày code đúng chuẩn. - Viết chương trình c sử dụng mảng hai chiều BÀI TẬP 1.
Viết ứng dụng quản lý chỗ ngồi được đặt cho một rạp chiếu phim có n hàng ghế, mỗi hàng có m ghế. Số chỗ ngồi được đánh mã là [i,j]. Viết ứng dụng cho phép người dùng chọn mã chỗ ngồi. Chương trình kiểm tra và trả về kết quả ―Đặt chỗ thành công‖ nếu chỗ ngồi còn trống.
Nếu chỗ ngồi đã có người đặt thì in thông báo ―Vui lòng chọn chỗ ngồi khác‖. Viết đoạn chương trình thống kê số chỗ ngồi còn trống trong câu 1 như sau: a) Tổng số chỗ ngồi còn trống trong rạp. b) Số lượng ghế trống từng hàng. c) Số lượng ghế trống từng dãy.
d) Số cặp ghế trống theo hàng e) Tìm hàng có nhiều ghế trống nhất f) Tìm hàng đã hết chỗ trống g) Kiểm tra tất cả các ghế ở ngoài biên được đặt hết hay chưa. Cho đồ thị đường đi như sau: Tài liệu giảng dạy K Thuật Lập Tr nh 2 Trang 18 Biết đồ thị trên được mã hoá thành ma trận vuông 4x4 sau: A B C D A 0 0 2 1 B 0 0 2 1 C 2 2 0 1 D 1 1 1 0 Viết chương trình cho phép người dùng thực hiện các thao tác sau: a) Nhập mảng sau và in ma trận trên ra màn hình. Biết ma trận được thành lập theo nguyên tắc là phần tử A[i,j] = A[j,i]. Các phần tử trong ma trận là số nguyên lớn hơn 0.
b) Viết hàm kiểm tra ma trận trên có phải là ma trận của một Đa đồ thị hay không. Biết đa đồ thị có ma trận với các phần tử nằm trên đường chéo chính bằng 0 và trong ma trận có ít nhất một phần tử lớn hơn 1. c) Viết chương trình tính tổng các phần tử theo dòng (hoặc cột). d) Viết chương trình xét Đồ thị có tồn tại một chu trình con trong nó hay không.
Biết nếu tất cả các giá trị tổng trên dòng (hoặc cột) là chẵn thì Đồ thị tương ứng với ma trận sẽ có một chu trình đi qua tất cả nó. Biết Chu trình là đường đi có điểm xuất phát v kết thúc tại cùng một đỉnh trong đồ thị. Viết chương trình mô phỏng trò chơi TIC -TAC -TOE. Biết hai người chơi sẽ nhập vào vị trí [i, j].
Mỗi lượt đặt chương trình xuất ma trận mới với các vị trí đã được đặt trước đó. Viết chương trình khởi tạo giá trị các phần tử là ngẫu nhiên cho ma trận các số nguyên kích thước m × n. Tài liệu giảng dạy K Thuật Lập Tr nh 2 Trang 19 6. Viết hàm in tam giác Pascal với chiều cao h.
Viết chương trình tạo ma trận vuông mới từ ma trận hình chữ nhật. Biết kích thước ma trận vuông mới sẽ là kích thước cạnh có nhỏ nhất, Sau đó viết các hàm sau: a. Viết hàm tính tích các phần tử trên mỗi cột của ma trận b. Viết hàm tính tích các phần tử nằm trên đường chéo chính, chéo phụ của ma trận vuông.
Viết hàm tính tổng các phần tử là số nguyên tố có trong ma trận. Viết hàm tính giá trị trung bình của các phần tử là số chẵn trong ma trận. Viết hàm tìm phần tử l lớn nhất trong ma trận f. Viết hàm đếm số lần xuất hiện của phần tử x trong ma trận, với x được nhập từ bàn phím.
Viết hàm sắp xếp ma trận theo thứ tự tăng dần từ trên xuống dưới và từ trái qua phải theo phương pháp dùng mảng phụ. Viết hàm sắp xếp các dòng trên ma trận theo thứ tự tăng dần. Tài liệu giảng dạy K Thuật Lập Tr nh 2 Trang 20 2. MỘT SỐ KIỂU DỮ LIỆU XÂY DỰNG SẴN TRONG C# Chương này nhằm giới thiệu cho sinh viên sử dụng kiểu dữ liệu xây dựng sẵn (built-in data types) trong C# như String, DateTime để xây dựng các chương trình vừa và nhỏ theo yêu cầu.
Tài liệu giảng dạy K Thuật Lập Tr nh 2 Trang 21 C# chia thành hai tập hợp kiểu dữ liệu chính: Built-in data types: là các kiểu dữ liệu mà ngôn ngữ cung cấp cho người lập trình. User-define data types: là kiểu dữ liệu do người dùng tự tạo ra. C# phân tập hợp kiểu dữ liệu này thành hai loại: Kiểu dữ liệu giá trị ( value types): một biến (variable) khi được khai báo với kiểu tham trị thì vùng nhớ của nó sẽ chứa giá trị của dữ liệu. Các kiểu dữ liệu tham trị có sẵn như: bool, byte, char, decimal, double, enum, float, int, long, sbyte, short, struct, ….
Thư viện DateTime được định nghĩa theo kiểu struct nên là một kiểu giá trị được xây dựng sẵn. Kiểu dữ liệu tham chiếu (reference types): một biến khi được khai báo kiểu dữ liệu tham chiếu thì vùng nhớ của nó được dùng để lưu địa chỉ tham chiếu tới vùng nhớ chứa giá trị thật sự của biến. Một số kiểu built-in reference types như: string, object, delegate, dynamic. Trong chương này chúng ta sẽ tìm hiểu kiểu dữ liệu được xây dựng sẵn string và DateTime 2.1| KHÁI NIỆM Trong C#, string là một kiểu dữ liệu được khai báo để lưu chuỗi ký tự.
Một string là một chuỗi các ký tự unicode hay là mảng các ký tự. Phạm vi của ký tự unicode trong khoảng tuừ U+0000 đến U+FFFF. String class được định nghĩa trong thư viện chuẩn. Hay nói cách khác đối tượng String là tập hợp dãy System.
Kích thước lớn nhất của một string objects khoảng 2GB hay khoảng một tỷ ký tự. Các đặc điểm của lớp String: Lớp System.String là lớp không thể sửa đổi một khi đối tượng đã được tạo ra. Thuộc tính Lengh cho biết tổng số các ký tự có trong chuỗi. Ký tự null cũng được tính vào chiều dài chuỗi.
Cho phép chuỗi rỗng khi khai báo Tài liệu giảng dạy K Thuật Lập Tr nh 2 Trang 22 Trong C#, String và string được sử dụng song song. Thực tế chúng không có khác biệt gì, string có thể coi là một bí danh (alias) cho System.2| KHAI BÁO, KHỞI TẠO // Khai báo chuỗi, không khởi tạo string message1; // Khai báo và khởi tạo chuỗi null string message2 = null; // Khai báo và khởi tạo chuỗi rỗng // sử dụng Empty constant thay vì ký hiệu "". string message3 = System.Empty; // Khai báo và khởi tạo chuỗi string oldPath = "c:\\Program Files\\Visual Studio 8.0"; // Khai báo chuỗi hằng const string message4 = "You can't get rid of me!"; // Sử dụng System.String để khai báo System.String greeting = "Hello World!"; // Sử dụng hàm tao khi khai báo string từ một mảng, char[] char[] letters = { 'A', 'B', 'C' }; string alphabet = new string(letters); // chuỗi ABC // Sử dụng hàm tạo khi khai báo string với số ký tự lặp lại string alphabet = new string(‘A’, 5); // chuỗi AAAAA // Khai báo chuỗi đường dẫn thư mục string sPath = @ "c:\Program Files\Visual Studio 8.0"; // Khai báo chuỗi nội suy với $ (interpolate string) string str = $ "Hello, {name}! Today is {DateTime.3| ĐỊNH DẠNG CHUỖI Định dạng canh lề: Format output Tài liệu giảng dạy K Thuật Lập Tr nh 2 Trang 23 String.Format(―–{0,10}–―, ―test‖); — test– String. Ví dụ, định dạng một chuỗi tiền tệ trên laptop của tôi sẽ trả về kết quả là £9.99, định dạng chuỗi tiền tệ trên một máy thiết lập vùng US sẽ trả về $9.
specifie forma output output r type t (double 1.00 decimal (whole number System.FormatExceptio d ) {0:d} n -12345 exponent / e scientific {0:e} 1.FormatExceptio r round trippable {0:r} 1.FormatExceptio x hexadecimal {0:x4} n ffffcfc7 Định dạng tuỳ chỉnh: output specifier type format (double 1234. decimal point placeholder {0:0.6 , thousand separator {0:0,0} 1,235 % percentage {0:0%} 123456% Bổ sung thêm các nhóm tách biệt; điều này hữu ích cho các định dạng khác nhau, dựa trên giá trị của tham số truyền vào. Ví dụ: Tài liệu giảng dạy K Thuật Lập Tr nh 2 Trang 25 String.00);Nothing}‖, value); Kết quả sẽ trả về là ―£1,240.00‖ nếu truyền vào 1243. Nó sẽ xuất ra cùng định dạng trong cặp ngoặc nếu giá trị là âm ―(£1,240.00)‖, và sẽ xuất ra ―Nothing‖ nếu giá trị là zero.4| THUỘC TÍNH, PHƯƠNG THỨC LỚP STRING Thuộc tính: Length Cho chiều dài của chuỗi Char[Int32] Trả về ký tự tại vị trí xác định trong chuỗi Ví dụ: /*Ví dụ: Chương trình in chiều dài chuỗi */ using System; namespace ConsoleApplication11 { class Program { static void Main(string[] args) { String MyStr = "Cao Dang"; Console.WriteLine("Chieu dai chuoi : " + MyStr.Length); for (int i = 0; i <= MyStr.ReadKey(); } } } Kết quả: Chieu dai chuoi : 8 C a o D a n g Một số phương thức xử lý chuỗi: Tài liệu giảng dạy K Thuật Lập Tr nh 2 Trang 26 Phương thức Ý nghĩa int Compare (string stra, string strb) So sánh hai chuỗi.
Trả về: Vd: String.Compare(str1 , str2 ) -1 : str1 < str2; 0 : str1 = str2; 1. : str1 > str2 string Concat (string str0, string Nối chuỗi str2 vào cuối chuỗi str1, trả về chuỗi str1, …) mới.Concate (str1 , str2 ); bool Contains(string str1) Trả true nếu str1 có chứa chuỗi str2. Ngược lại Vd: str1.Contains(str2); trả về false bool EndsWith(string value) Trả về true nếu str1 có chứa str2 cuối chuỗi.EndsWith(str2) Ngược lại trả về false bool Equals(string value) Trả về true nếu str1 và str2 cùng giá trị, ngược bool Equals(string a, string b) lại trả về false Vd: str1.Equals(str1, str2) int Indexof(string value, int Trả về vị trí bắt đầu chuỗi str2 trong chuỗi str1. startindex) Nếu không có trả về -1 Vd: str1 .IndexOf(str2) Public int IndexOfAny(char[] Trả về chỉ số của bất kỳ ký tự nào trong một anyof) mảng ký tự unicode (Vd: h, T) có trong str1 Char[] ch = { 'h', 'T' }; str1.IndexOfAny(ch )); String Insert(int startindex, string Chèn chuỗi str2 vào str1 tại vị trí startIndex value) Vd: str1.Insert(3, str2) Tài liệu giảng dạy K Thuật Lập Tr nh 2 Trang 27 Bool IsNullOrEmpty (string str) Trả về true nếu chuooix str null hoặc empty Vd: String .IsNullOrEmpty (str1) int LastIndexof(string str) Trả về chỉ mục cho sự xuất hiện cuối cùng của Vd: str1.lastindexof("u") một chuỗi str đã cho bên trong đối tượng hiện t ại Public string remove(int startindex, Xoá trong chuỗi str1 từ vị trí thứ startindex xoá int count) count ký tự Vd: str1.Remove(8, 4) String replace(string oldvalue, Thay thế tất cả chuỗi str1 xuất hiện trong chuỗi string newvalue) bằng chuỗi str2.
Trả về chuỗi mới.Replace(str1, str2) string ToLower() Chuyển chuỗi str1 thành chữ thường. Trả về Vd: str1.ToLower() chuỗi mới string ToUpper() Chuyển chuỗi str1 thành chữ hoa. Trả về chuỗi Vd: str1.ToUpper() mới string Trim() Gỡ bỏ tất cả ký tự khoảng trắng đầu và cuối Vd: str1.Trim() chuỗi Ví dụ: File: Program.cs /*Ví dụ: Chương trình minh họa sử dụng hàm xử lý chuỗi */ using System; using static System.