1. Trang chủ
  2. » Luận Văn - Báo Cáo

đồ án môn học cơ sở lập trình

39 0 0
Tài liệu đã được kiểm tra trùng lặp

Đ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ả HUỲNH NGUYỄN ANH CƯỜNG
Người hướng dẫn TS. Đặng Ngọc Hoàng Thành
Trường học ĐẠI HỌC KINH TẾ TP HỒ CHÍ MINH (UEH)
Chuyên ngành CƠ SỞ LẬP TRÌNH
Thể loại Đồ án môn học
Năm xuất bản 2022
Thành phố Tp. Hồ Chí Minh
Định dạng
Số trang 39
Dung lượng 2,97 MB

Cấu trúc

  • BÀI 1 (3)
    • 1. Phân Tích (4)
    • 2. Thuật Toán (4)
  • BÀI 2 (3)
  • BÀI 3 (3)
  • BÀI 4 (3)
  • BÀI 5 (3)
  • BÀI 6 (3)
  • PHỤ LỤC (26)

Nội dung

BỘ GIÁO DỤC VÀ ĐÀO TẠOĐẠI HỌC KINH TẾ TP HỒ CHÍ MINH UEHTRƯỜNG CÔNG NGHỆ VÀ THIẾT KẾGiảng Viên: TS.. Bài 3: Nhập vào một mảng các số nguyên.. In ra một số kết quả sau: số lượng số âm, tổ

Phân Tích

- Output: Nghiêm của phương trình trùng phương ax + bx + c = 0 (1) 4 2 Ý tưởng:

- Đưa về phương trình bâc 2 có dang ax + bx + c = 0 (2) 2

- Giải phương trình (2), dựa trên nghiêm của pt (2) tìm ra nghiệm của pt (1)

 Nếu pt (2) có 2 nghiêm dương thì phương trình (1) có 4 nghiêm

 Nếu pt (2) có 1 nghiệm dương và một nghiệm bằng 0 thì pt (1) có 3 nghiệm

 Nếu pt (2) có 1 nghiêm dương, một nghiệm âm hoặc có nghiệm kép dương thì phương trình (1) có 2 nghiêm

 Nếu pt (2) có 1 nghiệm âm và một nghiệm bằng 0 hoặc có nghệm kép bằng 0 thì pt (1) có 1 nghiệm

 Nếu pt (2) có 2 nghiêm âm hoặc vô nghiệm thì phương trình (1) vô nghiệm

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.

số số âm, số lượng số dương, tổng số số dương trong mảng.

Ví dụ: S = “ minh thich thi minh nhich thoi” => có 6 từ

sinh, điểm trung bình, xếp loại Giả sử dữ liệu của mảng gồm có ít nhất 5 phần tử Hãy in ra toàn bộ các phiếu điểm theo mẫu như sau:

Cấp cho sinh viên , năm sinh .

Trong kì thi tốt nghiệp 2021, sinh viên trên đã đạt điểm trung bình là , và được xếp loại Sinh viên có thứ hạng trong lớp.

Hiệu Trưởng Trường Đại học ABC.

- Output: Nghiêm của phương trình trùng phương ax + bx + c = 0 (1) 4 2 Ý tưởng:

- Đưa về phương trình bâc 2 có dang ax + bx + c = 0 (2) 2

- Giải phương trình (2), dựa trên nghiêm của pt (2) tìm ra nghiệm của pt (1)

 Nếu pt (2) có 2 nghiêm dương thì phương trình (1) có 4 nghiêm

 Nếu pt (2) có 1 nghiệm dương và một nghiệm bằng 0 thì pt (1) có 3 nghiệm

 Nếu pt (2) có 1 nghiêm dương, một nghiệm âm hoặc có nghiệm kép dương thì phương trình (1) có 2 nghiêm

 Nếu pt (2) có 1 nghiệm âm và một nghiệm bằng 0 hoặc có nghệm kép bằng 0 thì pt (1) có 1 nghiệm

 Nếu pt (2) có 2 nghiêm âm hoặc vô nghiệm thì phương trình (1) vô nghiệm

2 Thuật Toán a) Mô Tả Thuật Toán

- Bước 1: Nhập các số thực a, b, c;

- Bước 2: Nếu a = b = c = 0 thì thông báo “Phương trình có vô số nghiệm”; Kết thúc;

- Bước 3: Nếu a = b = 0 thì sang bước 25;

- Bước 4: Nếu a = 0 thì tiếp tục bước 5 không thì sang bước 9;

- Bước 6: Nếu d < 0 thì sang bước 25;

- Bước 7: Nếu d = 0 thì sang bước 24;

- Bước 8: Thông báo “Phương trình có 2 nghiệm x1 = , x2 = ”; Kết thúc;

- Bước 10: Nếu delta < 0 thì sang bước 25;

- Bước 12: Nếu delta = 0 thì tiếp tục bước 13, ngược lại sang bước 17;

- Bước 14: Nếu no1 < 0 thì sang bước 25;

- Bước 15: Nếu no1 = 0 thì thì sang bước 24;

- Bước 16: Thông báo “Phương trình có 2 nghiệm x1 = , x2 = ”; Kết thúc;

Too long to read on your phone? Save to read later on your computer

- Bước 18: Nếu no1 > 0 và no2 > 0 thì thông báo “Phương trình có 4 nghiệm x1 = , x2 = ,x3 = , x4 = ”; Kết thúc;

- Bước 19: Nếu no1 = 0 và no2 > 0 thì thông báo “Phương trình có 3 nghiệm x1 =

- Bước 20: Nếu no1 > 0 và no2 = 0 thì thông báo “Phương trình có 3 nghiệm x1 =

- Bước 21: Nếu no1 > 0 và no2 < 0 thì thông báo “Phương trình có 2 nghiệm x1 = , x2 = ”; Kết thúc;

- Bước 22: Nếu no1 < 0 và no2 > 0 thì thông báo “Phương trình có 2 nghiệm x1 = , x2 = ”; Kết thúc;

- Bước 23: Nếu no1 < 0 và no2 < 0 thì sang bước 25;

- Bước 24: Thông báo “Phương trình có 1 nghiệm x = ”; Kết thúc;

- Bước 25: Thông báo “Phương trình vô nghiệm”; Kết thúc;

// BÀI 1 static void Bai1( check) int

Console.Write("Nh pậ a = "); a = double.Parse(Console.ReadLine()); break;

Console.WriteLine("Vui lòng nh pậ s "ố);

Console.Write("Nh pậ b = "); b = double.Parse(Console.ReadLine()); break;

Console.WriteLine("Vui lòng nh pậ s "ố);

Console.Write("Nh pậ c = "); c = double.Parse(Console.ReadLine()); break;

Console.WriteLine("Vui lòng nh pậ s "ố);

Console.WriteLine("Ph ngươ trình có vô số nghi m"ệ );

// Ki mể tra a = 0, b = 0 else if (a == && b == ) 0 0

Console.WriteLine("Ph ngươ trình vô nghi m"ệ );

// Ki mể tra a = 0 else if (a == ) 0

Console.WriteLine("Ph ngươ trình vô nghi m"ệ );

Console.WriteLine("Ph ngươ trình có 1 nghi mệ duy nh tấ \nx = 0");

{ double no1 = Math.Sqrt(d); double no2 = -Math.Sqrt(d);

Console.WriteLine($"Ph ngươ trình có 2 nghi mệ \nx1 = {no1}, x2 = {no2}")

// Xác đ nhị các nghi mệ phươ trình ng double no1 = ; 0 double no2 = ; 0

Console.WriteLine("Ph ngươ trình vô nghi m"ệ );

// delta b ngằ 0 else if (delta == ) 0

// pt b cậ 2 có nghi mệ kép âm

Console.WriteLine("Ph ngươ trình vô nghi m"ệ );

// pt b cậ 2 có nghi mệ kép b ngằ 0 else if (no1 == ) 0

Console.WriteLine("Ph ngươ trình có 1 nghi mệ duy nh tấ \nx = 0");

// pt b cậ 2 có nghi mệ kép dươ ng else

{ no2 = Math.Sqrt(no1); no1 = -Math.Sqrt(no1);

Console.WriteLine($"Ph ngươ trình có 2 nghi mệ phân bi tệ \nx1 = {no1}

{ no1 = (-b - Math.Sqrt(delta)) / ( * a); 2 no2 = (-b + Math.Sqrt(delta)) / ( * a); 2

// pt b cậ 2 có 2 nghi mệ dươ ng

{ double no3 = -Math.Sqrt(no1); double no4 = -Math.Sqrt(no2); no1 = Math.Sqrt(no1); no2 = Math.Sqrt(no2);

Console.WriteLine($"Ph ngươ trình có 4 nghi mệ phân bi tệ \nx1 = {no1}

// pt b cậ 2 có 1 nghi mệ dương, 1 nghi mệ b ngằ 0 else if (no1 == && no2 > ) 0 0

{ double no3 = -Math.Sqrt(no2); double no4 = Math.Sqrt(no2);

Console.WriteLine($"Ph ngươ trình có 3 nghi mệ phân bi tệ \nx1 = {no3}

{ double no3 = -Math.Sqrt(no1); double no4 = Math.Sqrt(no1);

Console.WriteLine($"Ph ngươ trình có 3 nghi mệ phân bi tệ \nx1 = {no3}

// pt b cậ 2 có 2 nghi mệ trái d uấ else if (no1 > && no2 < ) 0 0

{ double no3 = -Math.Sqrt(no1); double no4 = Math.Sqrt(no1);

Console.WriteLine($"Ph ngươ trình có 2 nghi mệ phân bi tệ \nx1 = {no3}

{ double no3 = -Math.Sqrt(no2); double no4 = Math.Sqrt(no2);

Console.WriteLine($"Ph ngươ trình có 2 nghi mệ phân bi tệ \nx1 = {no3}

// pt b cậ 2 có 1 nghi mệ âm và 1 nghi mệ b ngằ 0 else if (no1 < && no2 == ) 0 0

Console.WriteLine("Ph ngươ trình có 1 nghi mệ duy nh tấ \nx = 0");

Console.WriteLine("Ph ngươ trình có 1 nghi mệ duy nh tấ \nx = 0");

// pt b cậ 2 có 2 nghi mệ âm else

Console.WriteLine("Ph ngươ trình vô nghi m"ệ );

- Ta thấy bên trong căn của mẫu có dạng là chính nó, ta nghĩ đến việc sử dụng chính nó bên trong nó.

- Sử dụng đệ quy để gọi chính căn của mẫu bên trong nó với 2 tham số đầu vào là n và i ( i chay từ 1 đến n + 1)

- Cứ tiếp tục gọi đệ quy cho tới khi nào i = n+1

2 Thuật Toán a) Mô Tả Thuật Toán

- Bước 2: Khai báo hàm dequy(n, i) => Nếu i < n +1 trả về ; Nếu i = n +1 trả về ;

- Bước 4: Thông báo kết quả “P = 1 / mau”; Kết thúc; b) Mã Nguồn

// S d ngử ụ hàm đệ quy cho m uẫ static double sqrtRecur(double n, double i)

} static void Bai2( check) int

Console.Write("Nh pậ n = "); n = Parse(Console.ReadLine()); int break;

Console.WriteLine("Vui lòng nh pậ s "ố);

// Hi nể th k tị ế quả

Console.Write($"K tế qu hi nả ể th v iị ớ n = {n}, P = ");

- Input: Một mảng các số nguyên

- Output: Số lượng số âm, dương trong mảng; tổng số âm, tổng số dương Ý tưởng:

- Duyệt qua các phần tử trong mảng, kiểm tra xem phần tử đó là số âm hay dương

- Tăng biến đếm (âm/dương) và cập nhật tổng (âm/dương) phù hợp với phần tử được duyệt

- Lặp đi lặp lại cho đến phần tử cuối cùng.

2 Thuật Toán a) Mô Tả Thuật Toán

- Bước 1: Nhập mảng số nguyên arr;

- Bước 2: sumA = sumD = countA = countD = i =0;

- Bước 3: Nếu i > số phần tử chứa trong arr thì chuyển sang bước 7, không thì tiếp tục bước 4;

- Bước 4: Nếu arr[i] < 0 thì countA = countA + 1 và sumA = sumA + arr[i] sau đó đến bước 6;

- Bước 5: Nếu arr[i] > 0 thì countB = countB + 1 và sumB = sumB + arr[i] sau đó đến bước 6;

- Bước 7: Thông báo kết quả; Kết thúc; b) Mã Nguồn

// BÀI 3 static void Bai3( check) int

// Khai báo và nh pậ m ngả

Random rd = new Random(); for int ( i = ; i < ; i++) 0 6

Console.Write("M ngả : ["); foreach ( val in arr) int

Console.Write("Nh pậ vào s lố ượ ph nngầ t c aử ủ m ng:ả "); n = Parse(Console.ReadLine()); int break;

Console.WriteLine("Vui lòng nh pậ số nguyên");

// Nh pậ giá trị t ngừ ph nầ tử for int ( i = ; i < arr.Length; i++) 0

Console.Write($"Nh pậ ph nầ tử th {i + 1}: "ứ );

12 arr[i] = Parse(Console.ReadLine()); int break;

Console.WriteLine("Vui lòng nh pậ số nguyên");

// Ki mể tra ph nầ tử m ngả sumA = ; int 0 sumD = ; int 0 countA = ; int 0 countD = ; int 0 for int ( i = ; i < arr.Length; i++) 0

// Hi nể th k tị ế quả

Console.WriteLine("\nK tế quả hi nể th :ị ");

Console.WriteLine($"Số lượ s âm là {countA}, t ngngố ổ số ố s âm là {sumA} \nS lố ượ ng số dươ là {countD}, t ngng ổ s s dố ố ươ là {sumD}"); ng

- Input: Một ma trận A mxn

- Output: Ma trận phản chiếu B của A nxm mxn Ý tưởng:

- Ma trận B nxm có hàng i là cột i của ma trận A mxn (i số phần tử của arrStr thì chuyển đến bước 8, không thì tiếp tục bước 5;

- Bước 5: Nếu arrStr[i] = rỗng (String.Empty) hoặc (, | | - | ~ | ? | / | ( | ) | ; | & | “

| / ) thì chuyển đến bước 7, không thì tiếp tục;

- Bước 8: Thông báo kết quả “count”; Kết thúc: b) Mã Nguồn

// BÀI 5 static void Bai5( check) int

16 str = " Huỳnh Nguy nễ Anh Cườ - 31211024275 & DS002 "; ng

Console.Write("Nh pậ chu iỗ mu nố ki mể tra: "); str = Console.ReadLine();

} string[] arrStr = str.Split( ); ' ' count = ; int 0 for int ( i = ; i < arrStr.Length; i++) 0

{ case : "." case : ";" case : "'" case"\"": case"-": case")": case"(": case"?": case"!": case"&": case : ","continue; default: count += ; 1break;

// Hi nể thị k tế quả

Console.WriteLine($"Chu iỗ \"{str}\" có {count} t "ừ );

- Input: Thông tin sinh viên (họ tên, năm sinh, điểm trung bình)

- Output: In ra bảng điếm tốt nghiệp của sinh viên với xếp loại và thứ hạng sinh viên. Ý tưởng:

- Sử dụng kiểu dữ liệu object để lưu trữ danh sách sinh viên và thuộc tính của từng sinh viên

- Xây dựng các hàm nhập xuất thông tin sinh viên

 Hàm nhập thông tin một sinh viên

 Hàm xuất thông tin một sinh viên

 Hàm nhập danh sách sinh viên

- Xây dựng hàm xác định xếp loại học lực và thứ hạng của sinh viên dựa vào điểm trung bình nhập vào

 Xếp loại sinh viên dựa vào điểm trung bình

 Xác định thứ hạng của sinh viên dựa trên điểm trung bình bằng cách sử dụng thuật toán sắp xếp thứ tự và loại bỏ các phần tử trùng

 Tạo một mảng chứa điểm của các sinh viên

 Sắp xếp thứ tự giảm dần cho mảng chứa điểm: bằng cách so sánh

2 phần tử kề nhau, nếu phần tử đứng sau lớn hơn phần tử đứng trước ta hoán đổi giá trị của 2 phần tử này cho nhau Lặp đi lặp lại công việc cho từng phần tử trong mảng cho đến phần tử cuối cùng.

 Tạo mảng mới (1) bằng cách loại bỏ các phần tử trùng nhau trong mảng vừa sắp xếp (2): duyệt qua các phần tử của mảng (2) gán giá trị MinValue cho các phần tử bị trùng, tiếp tục duyệt lại mảng (2) và lấy các phần tử không trùng ( khác MinValue ) vào mảng (1).

 Chỉ số của các phần tử trong mảng (1) + 1 là thứ hạng của các sinh viên có điểm số tương ứng với giá trị của phần tử đó.

- Sau khi xây dựng xong các hàm ta thực hiện thuật toán để giải bài tập

2 Thuật Toán a) Mô Tả Thuật Toán

- Bước 1: Nhập thông tin danh sách sinh viên vào dssv;

- Bước 2: Nhập thông tin họ tên, năm sinh, điểm trung bình cho từng sinh viên vào con của dssv là sv;

- Bước 4: Nếu i < số sinh viên thì tiếp tục bước 5, không thì chuyển đến bước 7;

- Bước 5: score[i] = điểm trung bình của sv thứ i + 1;

- Bước 8: Nếu i < số phần tử của score thì tiếp tục bước 9, không thì chuyển đến bước 17;

- Bước 10: Nếu j < số phần tử của score thì tiếp tục bước 11, không thì chuyển đến bước 16;

- Bước 11: Nếu score[j] > score[i] thì tiếp tục bước 12, không thì chuyển đến bước

- Bước 18: Nếu i < số phần tử của score thì tiếp tục bước 19, không thì chuyển đến bước 25;

- Bước 20: Nếu j < số phần tử của score thì tiếp tục bước 21, không thì chuyển đến bước 24;

- Bước 21: Nếu score[j] = score[i] thì tiếp tục bước 22, không thì chuyển đến bước

- Bước 26: Nếu i < số phần tử của score thì tiếp tục bước 27, không thì chuyển đến bước 31;

- Bước 27: Nếu score[i] != -1 thì tiếp tục bước 28, không thì chuyển đến bước 30;

- Bước 32: Nếu i < số sinh viên thì tiếp tục bước 33, không thì chuyển đến bước 44;

- Bước 33: tmp = điểm trung bình của sinh viên thứ i + 1;

- Bước 34: Nếu tmp

Ngày đăng: 16/06/2024, 15:18

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

TÀI LIỆU LIÊN QUAN

w