Untitled BỘ GIÁO DỤC VÀ ĐÀO TẠO ĐẠI HỌC KINH TẾ TP HỒ CHÍ MINH (UEH) TRƯỜNG CÔNG NGHỆ VÀ THIẾT KẾ ĐỒ ÁN MÔN HỌC CƠ SỞ LẬP TRÌNH Sinh Viên LÝ GIA THUẬN MSSV 31211026754 Chuyên Ngành CƠ SỞ LẬP TRÌNH[.]
Trang 1BỘ GIÁO DỤC VÀ ĐÀO TẠO
ĐẠI HỌC KINH TẾ TP HỒ CHÍ MINH (UEH)
TRƯỜNG CÔNG NGHỆ VÀ THIẾT KẾ
Giảng Viên: TS Đặng Ngọc Hoàng Thành
Tp Hồ Chí Minh, Ngày 27 tháng 10 năm 2022
Trang 2M Ụ C L Ụ C
MỤC LỤC 2
ĐỀ BÀI 3
LỜI GIẢI 4
BÀI 1 4
1 Phân Tích 4
2 Thuật Toán 4
BÀI 2 4
1 Phân Tích 4
2 Thuật Toán 4
BÀI 3 4
1 Phân Tích 4
2 Thuật Toán 4
BÀI 4 5
1 Phân Tích 5
2 Thuật Toán 5
BÀI 5 5
1 Phân Tích 5
2 Thuật Toán 5
BÀI 6 5
1 Phân Tích 5
2 Thuật Toán 5
ỨNG DỤNG 6
PHỤ LỤC 7
TÀI LIỆU THAM KHẢO 8
Trang 3ĐỀ BÀI
Bài 1 Nhập vào 1 số N nguyên dương Cho biết N có phải là bội số của 3 và 5?
Bài 2
Có n+1dấu căn Trong đó, n là số cuối trong sốt hứ tự của tên bạn trong danh sách, ví dụ, bạn có
số thứ tự là 1, 11, 21, v.v., thì n=1, như yêu cầu đầu tiên
Bài 3 Sắp xếp các phần tử trong một mảng gồm n số nguyên theo thứ tự từ nhỏ đến lớn
Bài 4 Nhập các phần tử của một ma trận vuông cấp n, in ra ma trận chuyển vị của nó
Bài 5 Nhập chuỗi chứa đầy đủ họ, tên lót và tên Tách tên ra khỏi họ và tên lót sau đó in lại đầy đủ họ, tên lót và tên trong một khoảng rộng 40 vị trí trong đó họ và tên lót canh trái, tên canh phải
Bài 6 Cho mảng nhiều chiều gồm có các thông tin liên quan đến khách lưu trú ở khách sạn Khách gồm các thông tin: họ tên, số ngày ở, số bữa ăn, tiền ở (1 ngày), tiền ăn (1 bữa), phí phục vụ Phân tích và viết chương trình tính tiền trọ khách sạn In hóa đơn tính tiền lên màn hình có mẫu sau:
***********************************************************************************
Khách sạn Five Stars
Hóa đơn khách sạn
Quí Ông(Bà) : ?????????????????????
Sốngày ở: ??? Sốbữa ăn : ???
Tiền ở: ???????? Tiền ăn : ????????? Phí phục vụ: ???????
Tổng Cộng : ???????????????
Hân hạnh phục vụ quí khách
***********************************************************************************
Trang 4LỜI GIẢI
BÀI 1
1 Phân Tích
Xác định bài toán;
- Input: Sô nguyên dương N
- Output: Là bội hoặc không là bội của 5 và 3
Bước 2: Nếu N > 0 và N 5 * 3 thì in ra màn hình N là bội chung của 5 và 3⁝
Bước 4: Nếu N > 0 và N ! 5 * 3 thì in ra màn hình N không là bội chung của 5 và 3⁝Bước 3: Nếu N < 0 thì in ra màn hình N phải là số nguyên dương và quay lại Bước 3
Sơ đồ khối:
Trang 5Mã nguồn:
Console.WriteLine(" > BÀI T P 1: "Ậ );
nguyenduong:
Console.WriteLine("Nh p m t s N đ xác đ nh N có ph i là b i c a 3 và 5: "ậ ộ ố ể ị ả ộ ủ ); int = int.Parse(Console.ReadLine());
Trang 6Mô tả thuật toán:
Bước 1: Tạo hàm tính Căn Bậc N Math.Pow(A, 1/N): =
Bước 2: Cho N là 3 ( N là số cuối trong số thứ tự )
Bước 3: Cho S =
Bước 4: Tạo vòng lặp for i = n => i >= 1 (i giảm từ n về 1)
Bước 5: Cho S = vào vòng lặp trong Bước 4
- Nếu i=n trả về giá trị =
- Nếu 1<= i < n trả về giá trị = =
- Nếu i=0 trả về giá trị S = 1;
- Nếu i<0 không tồn tại giá trị S
Console.WriteLine(" > BÀI T P 2: "Ậ );
Console.WriteLine("N là s cu i trong s th t c a danh sách l p: N = 3 "ố ố ố ứ ự ủ ớ ); int = 3
Trang 7- Input: Chuỗi họ tên
- Output: Chuỗi họ và tên lót cách tên 40 khoảng cách
Ý tưởng:
- Đảo ngược chuỗi để xác định độ dài của tên, dấu cách đầu tiên của chuỗi ngược là dấu cách cuốicùng của chuỗi nhập vào
2 Thuật toán
Mô tả thuật toán:
Bước 1: Nhập N là độ dài của mảng A
Bước 2: Khởi tạo ma trận A với độ dài N
Bước 3: Tạo một vòng for với giá trị i = 0 chạy tới độ dài N
Bước 4: Nhập các giá trị phần tử vào bước 3
Bước 5: Tạo một vòng for với giá trị i = 0 chạy tới A.Length – 1 ( lấy các giá trị phần tử từ trị số ban đầu đền trị số áp chót của mảng A )
Bước 6: Tạo một vòng for với giá trị j+1 = 0 chạy tới A.Length trong bước 5 ( lấy các giá trị phần tử từ trị
số thứ i+1 đến trị số của cùng của mảng A )
Bước 7: Nếu giá trị A[i]>A[j] thì thay thế A[i] = A[j]
Bước 8: Tạo một vòng lặp như bước 3 và in ra mảng A[i]
Mã nguồn:
Console.WriteLine(" > BÀI T P 3: "Ậ );
Console.Write("Nh p đ dài c a m ng: "ậ ộ ủ ả );
int = int.Parse(Console.ReadLine());
int[] a = new int[ ];
Trang 9Ý tưởng:
- Tạo một ma trận mới có cấp và giá trị tương đương với ma trận ban đầu Sau đó hoán đổi các giá trị trong hàng của ma trận mới với giá trị trong cột của ma trận ban đầu và các giá trị trong cột của matrận mới với giá trị trong hàng của ma trận ban đầu
2 Thuật toán
Mô tả thuật toán:
Bước 1: Nhập N là cấp của ma trận A
Bước 2: Khởi tạo ma trận A với cấp N
Bước 3: Tạo một vòng for với giá trị i = 0 chạy tới A.GetLength(0) (Các trị số trong các hàng)
Bước 4: Tạo một vòng lặp for trong bước 3 với giá trị j = 0 chạy tới A.GetLength(1) (Các trị số trong các cột)
Bước 5: Nhập các phần tử vào ma trận A[i,j] trong bước 4
Bước 6: Khởi tạo ma trận B với cấp N tương đương
Bước 7: Tạo hai vòng lặp như bước 3 và 4
Bước 8: Cho các giá trị phần tử trong các hàng của ma trận B bằng với các giá trị phần tử trong cột của
ma trận A và ngược lại : B[i,j] = A[j,i]
Bước 9: Tạo hai vòng lặp như bước 3 và 4 và in ra ma trận A[i,j] ( ma trận ban đầu ) đối chiếu với ma trậnB[i,j] ( ma trận chuyển vị )
Mã nguồn:
Console.WriteLine(" > BÀI T P 4: "Ậ );
Console.WriteLine("Nh p c p c a ma tr n: "ậ ấ ủ ậ );
int = int.Parse(Console.ReadLine());
int[,] A = new int[ , n];
for(int = ; i A GetLength( ); i++ )
{
for(int = ; j A GetLength( ); j++)
{
Console.Write("Nh p A[{0}][{1}] : "ậ , i j);
A i, j] = int.Parse(Console.ReadLine());
}
}
int[,] B = new int[ , n];
for(int = ; i B GetLength( ); i++ )
{
for(int = ; j B GetLength( ); j++)
Downloaded by Free Games Android (vuchinhhp1@gmail.com)
Trang 10{
B i, j] = A j, i];
}
}
Console.WriteLine("Ma tr n ban đ u: "ậ ầ );
for(int = ; i A GetLength( ); i++ )
Console.WriteLine("Ma tr n chuy n v : "ậ ể ị );
for(int = ; i A GetLength( ); i++ )
- Input: Chuỗi họ tên
- Output: Chuỗi họ và tên lót cách tên 40 khoảng cách
Ý tưởng:
- Đảo ngược chuỗi để xác định độ dài của tên, dấu cách đầu tiên của chuỗi ngược là dấu cách cuốicùng của chuỗi nhập vào
2 Thuật toán
Mô tả thuật toán:
Bước 1: Nhập chuỗi họ và tên với biến name
Bước 2: Tạo chuỗi rỗng reverbname
Bước 3: Tạo một vòng lặp for với giá trị i chạy từ name.Length – 1 về 0
Bước 4: In ra chuỗi ngược reverbname += name[i] trong bước 3
Downloaded by Free Games Android (vuchinhhp1@gmail.com)
Trang 11Bước 5: Tạo n là trị số của dấu cách cuối cùng trong chuỗi name (dấu cách phân tên và tên lót) =
name.Length - reverbname.IndexOf(“ “) ( độ dài của chuỗi name trừ cho trị số dấu cách đầu tiên của chuỗi ngược reverbname)
Bước 6: Tạo khoảng trống s = 40 dấu cách
Bước 7: In kết qua là name.Substring(0,n) + s + name.Substring(n) (chuỗi phụ của chuỗi name từ trị số 0 đến n + khoảng trống + chuỗi phụ của chuỗi name chạy từ n đến hết)
Mã nguồn:
Console.WriteLine(" > BÀI T P 5: "Ậ );
Console.WriteLine("Nh p H Và Tên: "ậ ọ );
string namee = Console.ReadLine();
string = new string(' ', khoangtrong);
Console.WriteLine("K t qu là: ế ả \n" + namee.Substring( , ) + s +
- Input: Thông tin khách hàng, ngày ở, tiền ăn, tiền ở
- Output: Tổng tiền của khách hàng
Ý tưởng:
- Tạo hàm 1 chiều để nhập thông tin
- Tạo hàm 2 chiều để in ra số lượng thông tin của khách hàng
2 Mô Tả
Mô tả thuật toán:
Bước 1: Tạo một hàm để nhập thông tin của khách hàng với biến đầu vào là một mảng 1 chiều Object[] TT: NhapTT(Object[] TT)
Downloaded by Free Games Android (vuchinhhp1@gmail.com)
Trang 12- Nhập thông tin (Họ và tên, Số ngày ở, Số bữa ăn, tiền ở, tiền ăn và phí dịch vụ) vào năm phần
- Tạo một vòng lặp for với i=0 => i.Length để lấy thông tin của i của khách hàng được gán vào
mảng 1 chiều chiều TT[] và chạy hàm NhapTT( TT[i] ) để gán các giá trị được nhập từ bước 1 vào mảng hai chiều TT[][]
Bước 4: Tạo một hàm InTTKH() với biến đầu vào là mảng hai chiều Object[][] TT: InTTKH( Object[][]
TT )
- Tạo một vòng lặp for như bước 3 vào chạy hàm InTT( [TT[i] ) để in thông tin từ bước 2
Bước 5: Tạo một hàm tính tổng Total( Object[][] TT )
- Tạo một vòng lặp for với i=0 => i.Length để truy cập vào thông tin khách hàng i được gán vào mảng 1 chiều và tính tổng số tiền dịch vụ với các giá trị ở bước 1 = (int)TT[i][1] * (float)TT[i][3] + (int)TT[i][2] * (float)TT[i][4] + (float)TT[i][5]
Bước 6: Tạo hàm Main():
-Nhập số lượng khách hàng từ màn hình với biến so_luong_khach_hang
- Khởi tạo mảng hai chiều object[][] TT = new object[so_luong_khach_hang][]
-Tạo một vòng lặp for i=0 đến i.Length để khởi tạo 7 đơn vị trong chiều thứ 1 tương đương với
Số lượng thông tin ở Bước 2
- Gọi các hàm NhapTTKH(), Total(), InTTKH()
Mã nguồn:
Console.WriteLine(" > BÀI T P 6"Ậ );
static void NhapTT(object[] tt)
{
Console.Write("Nh p H và tên: "ậ ọ );
tt[ ] = Console.ReadLine();
Console.Write("Nh p ngày : "ậ ở );
tt[ ] = int.Parse(Console.ReadLine());
Console.Write("Nh p s b a ăn: "ậ ố ữ );
tt[ ] = int.Parse(Console.ReadLine());
Console.Write("Nh p ti n (1 ngày)(VND): "ậ ề ở );
Downloaded by Free Games Android (vuchinhhp1@gmail.com)
Trang 13tt[ ] = float.Parse(Console.ReadLine());
Console.Write("Nh p ti n ăn (1 b a)(VND): "ậ ề ữ );
tt[ ] = float.Parse(Console.ReadLine());
Trang 14}
Console.Write("Nh p s lậ ố ượng khách hàng: ");
int so_luong_kh = int.Parse(Console.ReadLine());
object[][] tt = new object[so_luong_kh][];
for(int = ; i tt.Length; ++)
Trang 15Downloaded by Free Games Android (vuchinhhp1@gmail.com)
Trang 16Downloaded by Free Games Android (vuchinhhp1@gmail.com)
Trang 17PHỤ LỤC
Console.InputEncoding = System.Text.Encoding.UTF8;
Console.OutputEncoding = System.Text.Encoding.UTF8;
Console.WriteLine(" > BÀI T P 2: "Ậ );
Console.WriteLine("N là s cu i trong s th t c a danh sách l p: N = 3 "ố ố ố ứ ự ủ ớ ); int = 3
Trang 18Console.WriteLine(" > BÀI T P 3: "Ậ );
Console.Write("Nh p đ dài c a m ng: "ậ ộ ủ ả );
int = int.Parse(Console.ReadLine());
int[] a = new int[ ];
Trang 19int = int.Parse(Console.ReadLine());
int[,] A = new int[ , n];
for(int = ; i A GetLength( ); i++ )
{
for(int = ; j A GetLength( ); j++)
{
Console.Write("Nh p A[{0}][{1}] : "ậ , i j);
A i, j] = int.Parse(Console.ReadLine());
}
}
int[,] B = new int[ , n];
for(int = ; i B GetLength( ); i++ )
Console.WriteLine("Ma tr n ban đ u: "ậ ầ );
for(int = ; i A GetLength( ); i++ )
Console.WriteLine("Ma tr n chuy n v : "ậ ể ị );
for(int = ; i A GetLength( ); i++ )
Trang 20// Bai 5
static void Cau5()
{
Console.WriteLine(" > BÀI T P 5: "Ậ );
Console.WriteLine("Nh p H Và Tên: "ậ ọ );
string namee = Console.ReadLine();
string = new string(' ', khoangtrong);
Console.WriteLine("K t qu là: ế ả \n" + namee.Substring( , ) + s +
Console.WriteLine(" > BÀI T P 6"Ậ );
void NhapTT(object[] tt)
{
Console.Write("Nh p H và tên: "ậ ọ );
tt[ ] = Console.ReadLine();
Console.Write("Nh p ngày : "ậ ở );
tt[ ] = int.Parse(Console.ReadLine());
Console.Write("Nh p s b a ăn: "ậ ố ữ );
tt[ ] = int.Parse(Console.ReadLine());
Console.Write("Nh p ti n (1 ngày)(VND): "ậ ề ở );
tt[ ] = float.Parse(Console.ReadLine());
Console.Write("Nh p ti n ăn (1 b a)(VND): "ậ ề ữ );
tt[ ] = float.Parse(Console.ReadLine());
Trang 21Console.Write("Nh p s lậ ố ượng khách hàng: ");
int so_luong_kh = int.Parse(Console.ReadLine());
object[][] tt = new object[so_luong_kh][];
for(int = ; i tt.Length; ++)
Trang 22Console.Write("> Vui lòng ch n yêu c u c a b n: "ọ ầầ ủ ạ );
Downloaded by Free Games Android (vuchinhhp1@gmail.com)
Trang 23string baitap = Console.ReadLine();
Trang 24TÀI LIỆU THAM KHẢO
…
Downloaded by Free Games Android (vuchinhhp1@gmail.com)