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