1. Trang chủ
  2. » Giáo Dục - Đào Tạo

ĐỒ án môn học cơ sở lập TRÌNH

41 2 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

Thông tin cơ bản

Tiêu đề Đồ Án Môn Học Cơ Sở Lập Trình
Tác giả Trần Minh Hiếu
Người hướng dẫn TS. Đặng Ngọc Hoàng Thành
Trường học Trường Đại Học Kinh Tế TP Hồ Chí Minh
Chuyên ngành Cơ sở Lập Trình
Thể loại Đồ án môn học
Năm xuất bản 2021
Thành phố Tp. Hồ Chí Minh
Định dạng
Số trang 41
Dung lượng 822,26 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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 1

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Ế

MSSV: 31211027578 STT: 10

Tp H ồ Chí Minh, Ngày xx tháng xx năm 2021

Trang 2

2

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 4

Cấ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 5

2 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 6

6

(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 7

V1 = 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 8

a) 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 9

9

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 10

double 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 11

a) 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 13

12 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 15

15

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 16

Console.WriteLine( "//////////// Ma Trận Ban Đầu ////////////" );

for (int i = 1; i <= n; i++)

int temp1 = hang - n + 1;

while (j <= (sohang - hang + 1))

Trang 17

a) 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 18

18

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 19

if (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 20

Xế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 21

21

} 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 22

22

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 23

23

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 24

24

Downloaded by Quang Tran (quangvaytiennhanh1994@gmail.com)

Trang 25

25

Downloaded by Quang Tran (quangvaytiennhanh1994@gmail.com)

Trang 26

26

Downloaded by Quang Tran (quangvaytiennhanh1994@gmail.com)

Trang 28

V1 = 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 29

double sqrt1 = (double)Math.Pow((n + 1), (float)(1 / k));

double sqrt2 = (double)Math.Pow((sqrt1 + n), (float)(1 / k));

Trang 31

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 32

Console.WriteLine("//////////// Ma Trận Ban Đầu ////////////");

for (int i = 1; i <= n; i++)

Trang 33

int 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 35

35

////////////////////////// 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 36

36

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 38

object[][] 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 39

39

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)

Ngày đăng: 15/12/2022, 15:27

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w