Trong kì thi tốt nghiệp 2021, sinh viên trên đã đạt điểm trung bình là < điểm trung bình> , và được xếp loại.. Sinh viên có thứ hạng trong lớp.. a Mô T ả Thuật Toán Ý tưởng thuật toán:
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Ế
MSSV: 31211027578 STT: 10
Tp H ồ Chí Minh, Ngày xx tháng xx năm 2021
Trang 22
M ỤC LỤC 2
ĐỀ BÀI 3
LỜI GIẢI 5
BÀI 1 5
1 Phân Tích 5
2 Thu ật Toán 5
BÀI 2 8
1 Phân Tích 8
2 Thu ật Toán 8
BÀI 3 10
1 Phân Tích 10
2 Thu ật Toán 11
BÀI 4 12
1 Phân Tích 12
2 Thuật Toán 13
BÀI 5 17
1 Phân Tích 17
2 Thu ật Toán 17
BÀI 6 19
1 Phân Tích 19
2 Thu ật Toán 20
ỨNG DỤNG 23
PHỤ LỤC 27
TÀI LIỆU THAM KHẢO 41
Trang 4Cấp cho sinh viên <họ tên>, năm sinh <năm sinh>
Trong kì thi tốt nghiệp 2021, sinh viên trên đã đạt điểm trung bình là < điểm trung bình> ,
và được xếp loại <xếp loại> Sinh viên có thứ hạng <???> trong lớp
Hiệu Trưởng Trường Đại học ABC Kí tên, Đóng dấu
-
Trang 52 Thu ật Toán
a) Mô T ả Thuật Toán
Áp dụng công thức tính thể tích hình cầu với bán kính R : 𝑉1 = 43𝜋𝑅3
Áp dụng công thức tính thể tích hình cầu với bán kính R x 2 : V11 = 43𝜋(𝑅 × 2)3
Áp dụng công thức tính thể tích hình trụ tròn với bán kính r và chiều cao h: 𝑉2 = 𝜋𝑟2ℎ (V11 là biến khi thể tích hình cầu thay đổi với R x 2 )
Áp dụng công thức tính thể tích hình trụ tròn với bán kính r x 2 và chiều cao h:
𝑉22 = 𝜋(𝑟 × 2)2ℎ
Trang 66
(V22 là biến khi thể tích hình cầu thay đổi với r x 2 )
Lấy V11 chia cho V1 và V22 chia cho V2 để thấy được sự thay đổi và in ra kết quả sự thay đổi
3𝜋(𝑅 × 2)3(thể tích hình cầu với bán kính R x 2) 𝑉2 = 𝜋𝑟2ℎ(thể tích hình trụ tròn với bán kính r và chiều
cao h) 𝑉22 = 𝜋(𝑟 × 2)2ℎ (thể tích hình trụ tròn với bán kính
r x 2 và chiều cao h)
In ra sự thay đổi hình cầu V11/V1
(gấp 8 lần)
In ra sự thay đổi hình trụ tròn V22/V2 (gấp 4 lần)
Thúc
Trang 7V1 = Math.Round((4 * Math.PI * Math.Pow(r1, 3)) / 3, 2);
//Console.WriteLine("Thể tích ban đầu của hình cầu là : " + V1);
Console.WriteLine( "Th ể tích hình trụ tròn sau khi thay đổi bán kính là: " + V22 + " G ấp " +
Math.Round(V22 / V2, 1) + " l ần thể tích ban đầu " );
Trang 8a) Mô T ả Thuật Toán
Sử dụng hàm Math.Pow để thực hiện việc tính căn bậc n+1
Sử dụng một biến để lưu giá trị n + 1 ( tôi đặt cho nó là biến k = n+1) vì căn bậc n +1 luôn không đổi
Sử dụng một biến gọi tên là sqrt1 để lưu giá trị của: √𝑛 + 1𝑘
Sử dụng tiếp một biến gọi tên là sqrt2 để lưu giá trị của: √𝑛 + √𝑛 + 1𝑘 𝑘
Sau khi tính hai giá trị ở trên thực hiện việc giảm n : n = n – 1
Sử dụng một biến s để thực hiện việc lưu giá trị sau mỗi lần tính các giá trị căn
Lặp đi lặp lại công việc gán giá trị căn vào cho s đồng thời gán lại giá trị của sqrt2 và giảm
n tới khi nào n < 0 thì thực hiện dừng
Ta được s cuối cùng sau khi kết thúc vòng lặp là biểu thức
s = √𝑛+1 1 + √2 + √3 + ⋯ + √𝑛 + 1𝑛+1 𝑛+1 𝑛+1
Trang 99
In ra kết quả là 1𝑠 = 1
√1+10+1√2+10+1√3+⋯+10+1√10+1 10+1
,ta được kết quả của bài toán
Trang 10double sqrt1 = (double)Math.Pow((n + 1), (float)(1 / k));
double sqrt2 = (double)Math.Pow((sqrt1 + n), (float)(1 / k));
- Dòng thứ nhất nhập số hạng đầu tiên của cấp số cộng u1
- Dòng thứ hai nhập công sai của cấp số cộng d
- Dòng thứ ba nhập số lượng phần tử cần in của cấp số cộng n ( n ≥ 2 )
Trang 11a) Mô T ả Thuật Toán
Sử dụng một biến đặt tên là i tương ứng với vị trí lần lượt của giá trị cần in trong cấp số cộng
Lặp lại công việc in các giá trị của cấp số cộng với số lần lặp là n ( sử dụng vòng lặp While) Ban đầu i khởi tạo là 1 : i = 1
Kiểm tra điều điện (i<=n) nếu đúng thì thực hiện in ra giá trị có công thức là: u1+(i-1)×d rồi thực hiện tăng i: i = i + 1
Tiếp tục thực hiện công việc kiểm tra và thực hiện các câu lệnh như trên cho đến khi việc kiểm tra điều kiện là sai với i > n thì kết thúc vòng lặp in
Ví dụ
Với u1=5, d=3, n=10
Khởi tạo i = 1
Kiểm tra điều kiện (i <= n)
thực hiện in ra giá trị đầu tiên của cấp số cộng u1+(i-1)×d = 5 + (1-1) × 3 = 5
tăng giá trị i lên 1 đơn vị i = i + 1 = 1 + 1 = 2
Tiếp tục kiểm tra điều kiện và nếu đúng thì thực hiện in và tăng i ta được lần lượt các
số 8,11,14,17,20,23,26,29,32
Với i = 10 ta in ra giá trị là 32 sau đó thực hiện tăng i ta được i = 11
Kiểm tra điều kiện ta thấy i > n ( 11 > 10 ) ta kết thúc vọng lặp in
Kết quả cuối ta sẽ thu được dãy cấp số cộng : 5, 8,11,14,17,20,23,26,29,32
Trang 1312 2 14 -6
4 78 -45 -56 23
44
2 Thu ật Toán
a) Mô Tả Thuật Toán
Khởi tạo một ma trận vuông cấp n x n là mảng hai chiều có có số phần tử là n * n với số
cột = số hàng = n
Sử dụng một biến gọi tên là hang ( vị trí của hàng in ra )
Sử dụng một biến gọi tên là sohang ( là tổng số hàng cần phải in ra )
Chia bài toán thành 2 phần cần phải giải quyết
Thực hiện lặp các công việc sau với điều kiện (hang ≤ sohang)
Phần 1 là với hang ≤ 𝑛
• Sử dụng một biến gọi tên là i (vị trí của hàng cần in)
• Khởi tạo i = 1
• Sử dụng một biến gọi tên là temp ( vị trị cột cần được in ra )
• Khởi tạo temp = n – hang + 1 ( cột cần in sẽ thay đổi theo hang và n )
• Lặp lại công việc với điều kiện ( i ≤ ℎ𝑎𝑛𝑔 ) ( hang trong phần này được hiểu là tổng số phần tử cần in ra ) ( sử dụng câu lệnh While để lặp)
• Sử dụng một biến gọi tên là temp1 ( vị trí hàng có giá trị cần in ra )
• Khởi tạo temp1 = hang – n + 1 ( cột cần in sẽ thay đổi theo hang và n )
Downloaded by Quang Tran (quangvaytiennhanh1994@gmail.com)
Trang 14• Tăng giá trị của hang: hang = hang + 1
Kết thúc vòng lặp với (hang > sohang) ta được kết quả theo yêu cầu bài toán
Ví dụ: Với n = 2
Các phần tử nhập vào : 4 8
7 9
Khởi tạo hang = 1
Khởi tạo sohang = n x 2 – 1 = 2 x 2 – 1 = 3
Lặp lại công việc với điều kiện (hang ≤ sohang)
nếu hang ≤ 𝑛 thì thực hiện
{
Khởi tạo i = 1;
Khởi tạo temp = n – hang + 1 = 2 - 1 + 1 = 2
Lặp lại công việc với điều kiện ( i ≤ hang )
{
In ra phần tử có hàng thứ [i] cột thứ [temp]
temp = temp + 1
i = i + 1 }
Trang 1515
nếu hang > 𝑛 thì thực hiện
{
Khởi tạo j = 1;
Khởi tạo temp1 = hang – n + 1 = 3 - 2 + 1 = 2
Lặp lại công việc với điều kiện ( j ≤ sohang – hang + 1 )
{
In ra phần tử có hàng thứ [temp1] cột thứ [j]
temp1 = temp1 + 1
j = j + 1 }
int[][] a = new int[n + 1][];
for (int i = 1; i <= n; i++) a[i] = new int[n + 1];
for (int i = 1; i <= n; i++)
Downloaded by Quang Tran (quangvaytiennhanh1994@gmail.com)
Trang 16Console.WriteLine( "//////////// Ma Trận Ban Đầu ////////////" );
for (int i = 1; i <= n; i++)
int temp1 = hang - n + 1;
while (j <= (sohang - hang + 1))
Trang 17a) Mô T ả Thuật Toán
Ý tưởng thuật toán: đếm rồi xóa kí tự cho tới khi không còn kí tự nào trong chuỗi
Sử dụng một biến được đặt tên là: dem = 0 ( đếm số lượng kí tự lặp lại trong chuỗi )
Downloaded by Quang Tran (quangvaytiennhanh1994@gmail.com)
Trang 1818
Lặp đi lặp lại các công việc với điều kiện ( s.IndexOf(kitu) ≥ 0 ) (s.IndexOf(kitu) là vị trí xuất hiện đầu tiên của kí tự đó trong chuỗi s )
{
Tăng biến dem: dem = dem + 1
s = s.Remove(s.IndexOf(kitu), 1) ( Xóa trong chuỗi s 1 kí tự tại vị trí xuất hiện đầu tiên của kí tự đó
}
In ra kí tự và số lần lặp ( in bien kitu va bien dem tương ứng)
}
Ví dụ:
Nhập vào chuỗi s: Troi mua
Lặp công việc với (s.length > 0) ( 8 > 0 )
Trang 19if (kitu == ' ' ) { Console.WriteLine( "Kí tự trắng xuất hiện {0} lần" , dem); }
else { Console.WriteLine( "Kí tự {0} xuất hiện {1} lần" ,kitu, dem); }
- Dòng thứ nhất nhập vào số lượng sinh viên n (n>0)
- (n x 4) dòng tiếp theo lần lượt nhập thông tin của sinh viên (Họ tên, năm sinh, điểm trung bình, xếp loại)
Downloaded by Quang Tran (quangvaytiennhanh1994@gmail.com)
Trang 20Xếp Loại Sinh Viên: Giỏi
Họ tên sinh viên: Nguyễn Văn B
Năm sinh: 2003
Điểm Trung Bình: 7.8
Xếp Loại Sinh Viên: Khá
- BẢNG ĐIỂM TỐT NGHIỆP Cấp cho sinh viên Nguyễn Văn A năm sinh 2003.Trong kì thi tốt nghiệp 2021, sinh viên trên đã đạt điểm trung bình là 8.2 và được xếp loại Giỏi Sinh viên có thứ hạng 1 trong lớp
Hiệu Trưởng Trường Đại học ABC
Kí tên, Đóng dấu - BẢNG ĐIỂM TỐT NGHIỆP Cấp cho sinh viên Nguyễn Văn B năm sinh 2003.Trong kì thi tốt nghiệp 2021, sinh viên trên đã đạt điểm trung bình là 7.8 và được xếp loại Khá Sinh viên có thứ hạng 2 trong lớp
Hiệu Trưởng Trường Đại học ABC
Kí tên, Đóng dấu -
2 Thu ật Toán
a) Mô T ả Thuật Toán
Đưa thông tin của sinh viên vào một mảng 2 chiều để quản lí
Sử dụng một phương thức để sắp xếp Sinh Viên dựa trên điều kiện là điểm trung bình
Sử dụng hai vòng for lồng nhau
Vòng for đầu bắt đầu từ chỉ số đầu tiên của mảng 2 chiều kết thúc tại độ dài của mảng – 1 Vòng for hai bắt đầu từ chỉ số liền sau chỉ số của vòng for đầu của mảng 2 chiều kết thúc tại độ dài của mảng
Dùng điều kiện điểm trung bình để so sánh rồi đổi chỗ dựa toàn bộ thông tin của từng sinh viên với nhau {
Dùng một biến tạm lưu thông tin sinh viên 1 Thông tin sinh viên 1 gắn lại là thông tin của sinh viên 2 Thông tin của sinh viên 2 sẽ gắn lại thông tin lưu trong biến tạm
Downloaded by Quang Tran (quangvaytiennhanh1994@gmail.com)
Trang 2121
} Sau khi sắp xếp sẽ có thông tin sinh viên sắp xếp lần lượt từ cao đến thấp với điều kiện sắp xếp là điểm trung bình
Nếu có 2 người có điểm bằng nhau thì thực hiện sử dụng một biến thuhang bắt đầu từ 1 để sắp xếp thứ hạng
Biến thuhang sẽ không đổi với người có điểm bằng nhau và chỉ tăng khi điểm người sau thấp hơn người trước
b) Mã Ngu ồn
////////////////////////// Nhập thông tin từng sinh viên //////////////////////////
static void NhapTT1SV(object[] sv)
////////////////////////// Nhập danh sách sinh viên //////////////////////////
static void NhapDSSV(object[][] ds)
{
for (int i = 0; i < ds.Length; i++)
NhapTT1SV(ds[i]);
}
////////////////////////// Sắp xếp theo thứ hạng sinh viên //////////////////////////
static void SapXepSV(object[][] ds)
{
Downloaded by Quang Tran (quangvaytiennhanh1994@gmail.com)
Trang 2222
for (int i = 0; i < ds.Length - 1; i++)
{
for (int j = i + 1; j < ds.Length; j++) {
if ((float)ds[i][2] <= (float)ds[j][2]) {
for (int k = 0; k < 4; k++) {
object temp = ds[i][k]; ds[i][k] = ds[j][k]; ds[j][k] = temp; }
}
}
}
}
////////////////////////// Xu ất KQ sau khi xếp hạng ////////////////////////// static void XuatDSSV(object[][] ds) {
NhapDSSV(ds); SapXepSV(ds); int thuhang = 1; int i = 0; int temp = 0; while (i < ds.Length) {
int j = i; while (j < ds.Length) {
if ((float)ds[i][2] == (float)ds[j][2]) {
temp = j; XuatKQ(ds[j]); Console.WriteLine( " Sinh viên có thứ hạng {0} trong lớp." , thuhang); Console.WriteLine(); Console.WriteLine( "Hiệu Trưởng Trường Đại Học ABC" ); Console.WriteLine(); Console.WriteLine( "Kí tên, Đóng dấu" ); Console.WriteLine(); j++; }
else j++; }
i = temp + 1; thuhang++; }
}
static void Bai6() {
Console.Write( "Nhập số lượng sinh viên n: " ); int n = Convert.ToInt32(Console.ReadLine()); while (n <= 0) {
Downloaded by Quang Tran (quangvaytiennhanh1994@gmail.com)
Trang 2323
Console.Write( "Nhập số lượng sinh viên n: " );
n = Convert.ToInt32(Console.ReadLine());
}
object[][] ds = new object[n][];
for (int i = 0; i < ds.Length; i++)
ds[i] = new object[4]; XuatDSSV(ds);}
ỨNG DỤNG
Downloaded by Quang Tran (quangvaytiennhanh1994@gmail.com)
Trang 2424
Downloaded by Quang Tran (quangvaytiennhanh1994@gmail.com)
Trang 2525
Downloaded by Quang Tran (quangvaytiennhanh1994@gmail.com)
Trang 2626
Downloaded by Quang Tran (quangvaytiennhanh1994@gmail.com)
Trang 28V1 = Math.Round((4 * Math.PI * Math.Pow(r1, 3)) / 3, 2);
Console.WriteLine("Thể tích ban đầu của hình cầu là : " + V1);
Console.WriteLine("Thể tích hình trụ tròn sau khi thay đổi bán kính là: " + V22 +
" Gấp xấp xỉ " + Math.Round(V22 / V2, 1) + " lần thể tích ban đầu ");
Trang 29double sqrt1 = (double)Math.Pow((n + 1), (float)(1 / k));
double sqrt2 = (double)Math.Pow((sqrt1 + n), (float)(1 / k));
Trang 31int[][] a = new int[n + 1][];
for (int i = 1; i <= n; i++) a[i] = new int[n + 1];
for (int i = 1; i <= n; i++)
Downloaded by Quang Tran (quangvaytiennhanh1994@gmail.com)
Trang 32Console.WriteLine("//////////// Ma Trận Ban Đầu ////////////");
for (int i = 1; i <= n; i++)
Trang 33int temp1 = hang - n + 1;
while (j <= (sohang - hang + 1))
Console.Write("Nhập vào một chuỗi: ");
Downloaded by Quang Tran (quangvaytiennhanh1994@gmail.com)
Trang 3535
////////////////////////// Nhập thông tin từng sinh viên //////////////////////////
static void NhapTT1SV(object[] sv)
////////////////////////// Nhập danh sách sinh viên //////////////////////////
Downloaded by Quang Tran (quangvaytiennhanh1994@gmail.com)
Trang 3636
static void NhapDSSV(object[][] ds)
{
for (int i = 0; i < ds.Length; i++) NhapTT1SV(ds[i]); }
////////////////////////// Sắp xếp theo thứ hạng sinh viên ////////////////////////// static void SapXepSV(object[][] ds) {
for (int i = 0; i < ds.Length - 1; i++) {
for (int j = i + 1; j < ds.Length; j++) {
if ((float)ds[i][2] <= (float)ds[j][2]) {
for (int k = 0; k < 4; k++) {
object temp = ds[i][k]; ds[i][k] = ds[j][k]; ds[j][k] = temp; }
}
}
}
}
////////////////////////// Xuất KQ sau khi xếp hạng //////////////////////////
Downloaded by Quang Tran (quangvaytiennhanh1994@gmail.com)
Trang 38object[][] ds = new object[n][];
for (int i = 0; i < ds.Length; i++)
ds[i] = new object[4];
kính r và chiều cao h Nếu bán kính của mỗi hình đều tăng lên gấp đôi, thì thể tích sẽ thay
đổi như thế nào.");
Downloaded by Quang Tran (quangvaytiennhanh1994@gmail.com)
Trang 3939
1/(n+1)√(1+(n+1)√(2+(n+1)√(3+ +(n+1)√(n+1)))) Có n+1 dấu căn Trong đó, n là số cuối trong số thứ 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.");
Console.WriteLine("Bài 3: Nhập số hạng đầu tiên của cấp số cộng, công sai của
cấp số cộng, số lượng phần tử cần in Sau đó in ra dãy cấp số cộng này ");
Console.WriteLine("Bài 4: Nhập ma trận vuông cấp n In các phần tử của ma trận này dọc theo phương của đường chéo chính ");
Console.WriteLine("Bài 5: Đọc vào một chuỗi Cho biết tần suất xuất hiên của các
\r\n -đã đạt điểm trung bình là < điểm trung bình> , và được xếp loại <xếp loại> Sinh viên có thứ hạng <???> trong lớp \r\nHiệu Trưởng Trường Đại học ABC Kí tên, Đóng dấu \r\n - \r\n");
Console.Write("Vui lòng chọn yêu cầu của bạn: ");
case 1: { Console.WriteLine("Bài 1"); Bai1(); break; };
case 2: { Console.WriteLine("Bài 2"); Bai2(); break; };
case 3: { Console.WriteLine("Bài 3"); Bai3(); break; };
case 4: { Console.WriteLine("Bài 4"); Bai4(); break; };
Downloaded by Quang Tran (quangvaytiennhanh1994@gmail.com)