Bài 1: Nhập các phần tử của một ma trận vuông cấp n, kiểm tra ma trận này có phảilà ma trận đối xứng qua đường chéo chính không?………27LỜI GIẢI CÁ NHÂN: BÙI LƯƠNG TRỌNG TRÍPhần 1.. Dùng mả
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Ế
Tp Hồ Chí Minh, Tháng 12 Năm 2023
Trang 2MỤC LỤC
ĐỀ BÀI……….……… 2
PHÂN CHIA CÔNG VIỆC……… 4
LỜI GIẢI……… 5
LỜI GIẢI CÁ NHÂN: NGUYỄN HUY HOÀNG……… 5
Phần 1 Bài 6: Nhập vào 3 số, biết rằng đó là số đo của 2 cạnh và góc nằm giữa hai cạnh của một tam giác Hãy tính các số đo còn lại (1 cạnh và 2 góc) ……….……….… 5
Phần 2 Bài 6: Dùng mảng 1 chiều để lưu số ngày của các tháng trong năm, chương trình nhập tháng t trong phạm vi từ 1-12, sau đó cho biết số ngày của tháng t…….……… 8
Phần 3 Bài 6: Nhập vào 2 ma trận A và B tính kết quả của C =A * Bmxn nxp mxp mxn nxp … …10
LỜI GIẢI CÁ NHÂN: NGUYỄN NHẬT BẢO Phần 1 Bài 2: Viết chương trình mô phỏng trò chơi Bao – Búa – Kéo Biết: Bao thắng Búa, Búa thắng Kéo, Kéo thắng Bao. ……… ……….14
Phần 2 Bài 2: Nhập các hệ số của đa thức bậc n theo x vào một mảng Nhập giá trị X In ra kết quả đa thức này: F(x) = anXn + a + + a + a x + a n-1Xn-1 2x2 1 0 ……….………… 16
Phần 3 Bài 2: Nhập các phần tử của ma trận Amxn , kiểm tra ma trận này có phải là ma trận đối xứng qua trục giữa không?……… ……… 19
LỜI GIẢI CÁ NHÂN: NGUYỄN LÊ ĐỨC TRÍ Phần 1 Bài 1: Viết chương trình giải hệ phương trình sau: a1x + b y = c1 1 a2x + b y = c2 2 ……… 21
Phần 2 Bài 1: Nhập dữ liệu vào mảng có n số nguyên Nhập số nguyên X In ra vị trí các phần tử trong mảng có giá trị bằng X……….…… 25
Phần 3 Bài 1: Nhập các phần tử của một ma trận vuông cấp n, kiểm tra ma trận này có phải là ma trận đối xứng qua đường chéo chính không?………
27 LỜI GIẢI CÁ NHÂN: BÙI LƯƠNG TRỌNG TRÍ Phần 1 Bài 10: Một hình cầu có bán kính R và một hình trụ có bán kính r và chiều cao h Nếu bán kính của mỗi hình tăng lên gấp đôi, thì thể tích sẽ thay đổi như thế nào …… … 30
Phần 2 Bài 10: 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 đây cấp số cộng này ……… …….………… 35
Trang 3Phần 3 Bài 10: Nhập ma trận vuông cấp n In ra các phần tử của ma trận này theo phương
của đường chéo chính. ……….… 38
ĐỀ NHÓM: ĐỀ CHẴN – NHÓM 2……….……… … … 43
Cho 1 mảng nhiều chiều gồm thông tin cá nhân của mỗi sinh viên: họ tên, năm 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 sau:
-BẢNG ĐIỂM TỐT NGHIỆP 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
1 Phân Tích……….…… ……….……… 43
2 Thuật Toán……….…… 43
ỨNG DỤNG……… 50
PHỤ LỤC……….……… …… 61
TÀI LIỆU THAM KHẢO……….……… ……
Trang 4PHÂN CHIA CÔNG VIỆC
Bài 6 - phần 1, 2, 3 Nguyễn Huy Hoàng
Bài 2 - phần 1, 2, 3 Nguyễn Nhật Bảo
Bài 1 - phần 1, 2, 3 Nguyễn Lê Đức Trí
Bài 10 - phần 1, 2, 3 Bùi Lương Trọng Trí
Bài cho nhóm chẵn - phần 4 Cả nhóm cùng làm
Trình bày đồ án và định dạng Word Cả nhóm cùng làm
Check đạo văn Turnitin Nguyễn Lê Đức Trí
Too long to read on your phone? Save to
read later on your computer
Save to a Studylist
Trang 5LỜI GIẢI
PHẦN LỜI GIẢI CÁ NHÂN: NGUYỄN HUY HOÀNG
Phần 1- Bài 6.Nhập vào 3 số, biết rằng đó là số đo của 2 cạnh và góc nằm giữa hai cạnh của một tam giác Hãy tính các số đo còn lại (1 cạnh, và 2 góc)
1 Phân Tích
Để tìm các cạnh và góc của một tam giác thì
Đầu tiên xác định các cạnh, góc đã cho có thỏa điều kiện trở thành 1 tam giác chưa
Áp dụng định lý hàm cos để tìm các cạnh, góc còn thiếu bằng công thức
2 Thuật Toán
a) Mô Tả Thuật Toán
Bước 1: để xuất tiếng việt dùng câu lệnh
Console.Write( "nhập vào góc giữa A và B: " );
Bước 3: lưu các giá trị vừa nhập vào các biến a, b, A
Console.WriteLine( "Tam giác không tồn tại" );
return ; } Bước 5: tính các giá trị yêu cầu
double c = Math.Sqrt(a * a + b * b - 2 * a * b * Math.Cos(A));
Trang 6b) Sơ Đồ Khối
Trang 8Phần 2- Bài 6 Dùng mảng 1 chiều để lưu số ngày của các tháng trong năm, chương trình nhập tháng t trong phạm vi từ 1-12, sau đó cho biết số ngày của tháng t
a) Mô Tả Thuật Toán
Bước 1: để xuất tiếng việt dùng câu lệnh
Console.OutputEncoding = Encoding.Unicode;
Console.InputEncoding = Encoding.Unicode;
Bước 2: nhập vào tháng t
Console.Write( "Nhập tháng : " );
Bước 3: lưu giá trị vừa nhập vào biến t
int t = Parse(Console.ReadLine()); int
Bước 4: kiểm tra giá trị vừa nhập có thỏa điều kiện số tháng trong 1 năm không
int [] soNgayThang = new int [] { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
bước 6: xuất ra màng hình số ngày của tháng vừa nhập
Console.WriteLine( "Số ngày của tháng {0} là: {1}" , t, soNgayThang[t - 1]);
Trang 9Console.WriteLine( "Giá trị của tháng không hợp lệ!" );
return ;
}
[] soNgayThang = int new int [] { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; Console.WriteLine( "Số ngày của tháng {0} là: {1}" , t, soNgayThang[t - 1]); }
}
}
Trang 10Phần 3- Bài 6 Nhập vào 2 ma trận A và B tính kết quả của C =A * Bmxn nxp mxp mxn nxp
1 Phân Tích
Khai báo hai biến ma trận Amxn và Bnxp.
Nhập vào hai ma trận Amxn và Bnxp.
Kiểm tra tính khả thi của phép nhân ma trận: Số cột của ma trận A phải bằng số hàng của ma trận B Tính tích từng phần tử của ma trận C theo công thức:
Cij = Σ(Aik * Bkj)
với i = 1, 2, , m; j = 1, 2, , p.
2 Thuật Toán
a) Mô Tả Thuật Toán
Bước 1: để xuất tiếng việt dùng câu lệnh
Console.OutputEncoding = Encoding.Unicode;
Console.InputEncoding = Encoding.Unicode;
Bước 2: khởi tạo các biến i, j, k, r1, c1, r2, c2, sum = 0
i, j, k, r1, c1, r2, c2, sum = 0; int
Bước 3: khởi tạo các mảng ma trận 1, 2, ma trận tích
int [,] arr1 = new int [50, 50];
int [,] arr2 = new int [50, 50];
int [,] ma_tran_tich = new int [50, 50];
Console.WriteLine( "Không thể nhân hai ma trận !!!" );
Console.Write( "số cột của ma trận 1 phải bằng số hàng của ma trận 2" );
Trang 12[,] arr1 = int new int [50, 50];
[,] arr2 = int new int [50, 50];
[,] ma_tran_tich = int new int [50, 50];
Console.WriteLine( "Không thể nhân hai ma trận !!!" );
Console.Write( "số cột của ma trận 1 phải bằng số hàng của ma trận 2" ); }
Trang 13}
Console.Write( "\nIn ma trận 1:\n" ); for (i = 0; i < r1; i++)
{
Console.Write( "\n" );
for (j = 0; j < c1; j++)
Console.Write( "{0}\t" , arr1[i, j]); }
Console.Write( "\nIn ma trận 2:\n" ); for (i = 0; i < r2; i++)
{
Console.Write( "\n" );
for (j = 0; j < c2; j++)
Console.Write( "{0}\t" , arr2[i, j]); }
Trang 14PHẦN LỜI GIẢI CÁ NHÂN: NGUYỄN NHẬT BẢO
Búa, Búa thắng Kéo, Kéo thắng Bao
1 Phân Tích
Input: Lựa chọn của người chơi, lựa chọn ngẫu nhiên của máy: Bao, Búa hoặc Kéo Output: Kết quả so sánh lựa chọn, kết luận ai thắng ai thua
2 Thuật Toán
a) Mô Tả Thuật Toán:
● Bước 1: Sử dụng lệnh Console.OutputEncoding = Encoding.UTF8;
Điều này sẽ đảm bảo Console hỗ trợ ký tự Unicode
● Bước 2: Khởi tạo các biến
Khai báo biến LuaChonNguoiChoi, KetQua theo kiểu String để kết quả thu được
là dạng chuỗi ký tự; đối với biến LuaChonMay thì theo kiểu Int:
● Bước 3: Nhận sự lựa chọn của người chơi
Người chơi có thể tùy chọn 1 trong 3 tùy chọn Bao, Búa, Kéo từ đầu vào của người dùng để bắt đầu trò chơi
Console.WriteLine(“Lựa chọn của bạn là gì? Bao, Búa hay Kéo?”);
LuaChonNguoiChoi = Console.ReadLine();
Phương thức ReadLine() sẽ đọc ra một dòng chữ từ đầu vào của người dùng
● Bước 4: Tạo lựa chọn ngẫu nhiên cho máy
Ta dùng Random để tạo một lựa chọn ngẫu nhiên của máy theo giá trị từ 0 đến 2 (0, 1, 2 tương ứng với Bao, Búa, Kéo)
● Bước 5: So sánh lựa chọn của người chơi và của máy
Ta sẽ dùng toán tử == để so sánh Nếu lựa chọn của người chơi và máy giống nhau, thì kết quả là “Hòa” Nếu lựa chọn của người chơi thắng lựa chọn của máy, thì kết quả là người chơi thắng Và nếu lựa chọn của máy thắng lựa chọn của người chơi, thì kết quả là máy thắng
● Bước 6: Hiển thị kết quả trò chơi
Ta sẽ dùng phương thức WriteLine() để hiển thị kết quả của trò chơi:
Console.WriteLine(“Kết quả: {0}”, KetQua);
Trang 15Console.WriteLine( "Chào mừng đến với trò chơi Bao-Búa-Kéo!" );
// Khởi tạo các biến
string LuaChonNguoiChoi = ; ""
LuaChonMay = 0; int
string KetQua = ; ""
// Nhận lựa chọn của người chơi
Console.WriteLine( "Bạn chọn Bao, Búa hay Kéo:" );
LuaChonNguoiChoi = Console.ReadLine();
// Tạo lựa chọn ngẫu nhiên của máy
Random random = new Random();
Trang 16// Hiển thị kết quả của trò chơi
Console.WriteLine( "Kết quả: {0}" , KetQua);
Console.ReadKey();
}
In ra kết quả đa thức này: F(x) = anXn + a + + a + a x + a
n-1Xn-1
2x2
1 0
1 Phân Tích:
Input: Bậc n của F(x), giá trị x
Output: Giá trị của biểu thức F(x)
Trang 172 Thuật Toán
a) Mô Tả Thuật Toán:
● Bước 1: Nhập bậc của đa thức F(x)
Khai báo biến n theo kiểu số nguyên Int, rồi in ra màn hình
● Bước 2: Khởi tạo mảng a có kích thước n + 1 chứa các hệ số bậc x của đa thức
Hệ số a[0] tương ứng với hệ số của x bậc 0, hệ số a[1] tương ứng với hệ số của x bậc 1, v.v
double[] a = new double[n + 1];
● Bước 3: Nhập các hệ số bậc x của đa thức F(x)
Các hệ số sẽ được nhập theo thứ tự từ bé đến lớn (nghĩa là hệ số của x bậc 0 nhập trước, sau đó tới x bậc 1, bậc 2,…v.v)
● Bước 4: Nhập giá trị x
Khai báo x cho kiểu dữ liệu Double, sau đó in ra màn hình
● Bước 5: Tính giá trị của đa thức F(x)
Bằng cách sử dụng công thức của đề bài, ta dùng vòng lặp for để thực hiện Vòng lặp for lặp từ giá trị 0 đến n, và tại mỗi bước lặp, giá trị của đa thức được tính bằngcách cộng thêm hệ số a[i] với giá trị trước đó của đa thức, nhân x với số mũ i
Ví dụ: n = 3, thì vòng lặp for sẽ lặp lại 3 lần Tại mỗi bước lặp, giá trị của F(x) sẽ được tính:
i = 0: F(x) = a[0]
i = 1: F(x) = a[0] + a[1]x
i = 2: F(x) = a[0] + a[1]x + a[2]x^2
…
Và kết quả cuối cùng của F(x) là giá trị của đa thức tại x
● Bước 6: In kết quả giá trị của đa thức F(x) ra màn hình
Ta dùng phương thức WriteLine(); để in ra kết quả
Trang 18b) Mã Nguồn
static void Main( string [] args)
{
Console.OutputEncoding = Encoding.UTF8; // Nhập bậc của đa thức
n; int
Console.Write( "Nhập bậc của đa thức: " );
n = Convert.ToInt32(Console.ReadLine()); // Khởi tạo mảng chứa các hệ số của đa thức
double [] a = new double [n + 1];
// Nhập giá trị của x
double x;
Console.Write( "Nhập giá trị của x: " );
x = Convert.ToDouble(Console.ReadLine()); // Tính giá trị của đa thức
Trang 19Phần 3 – Bài 2 Nhập các phần tử của ma trận Amxn , kiểm tra ma trận này có phải là
ma trận đối xứng qua trục giữa không?
1 Phân Tích
Input: Số hàng, số cột, số phần tử của ma trận
Output: Ma trận có đối xứng qua trục giữa hay không?
2 Thuật Toán
a) Mô Tả Thuật Toán:
● Bước 1: Sử dụng lệnh Console.OutputEncoding = Encoding.UTF8;
Điều này sẽ đảm bảo Console hỗ trợ ký tự Unicode
int[,] A = new int[m, n];
● Bước 4: Nhập vào các phần tử của ma trận
Sử dụng vòng lặp for để duyệt từng phần tử của ma trận Tại mỗi vị trí (i, j) chương trình sử dụng Console.Write() để hiển thị phần tử của ma trận và Convert.ToInt32() để chuyển đổi giá trị i,j được nhập từ người dùng thành kiểu dữ liệu int
● Bước 5: Kiểm tra ma trận đối xứng qua trục giữa:
Để kiểm tra ma trận đối xứng qua trục giữa, chương trình sẽ duyệt từng phần
tử của ma trận Tại mỗi vị trí (i, j) chương trình sẽ so sánh phần tử A[i, j] vớiphần tử A[m-i-1,n-j-1] Nếu hai phần tử này không bằng nhau, thì ma trận không đối xứng qua trục giữa Còn nếu hai phần tử này bằng nhau, thì chương trình sẽ tiếp tục duyệt phần tử tiếp theo
Biến DoiXung được sử dụng để lưu kết quả kiểm tra Biến này được gán giá trị true ban đầu với kiểu dữ liệu bool Nếu chương trình tìm thấy một phần
tử không đối xứng qua trục giữa, thì biến DoiXung sẽ được gán giá trị false
và vòng lặp sẽ bị ngắt Ngược lại, nếu chương trình duyệt hết tất cả các phần
tử mà không tìm thấy phần tử nào không đối xứng qua trục giữa thì biến DoiXung vẫn giữ nguyên giá trị true và ma trận được coi là đối xứng qua trục giữa
● Bước 6: Hiển thị kết quả
Trang 20Sử dụng lệnh if else để hiển thị kết quả:
- Nếu biến DoiXung có giá trị true thì chương trình hiển thị kết quả “Ma trận A đối xứng qua trục giữa
- Nếu biến DoiXung có giá trị false thì chương trình hiển thị kết quả “Ma trận A không đối xứng qua trục giữa”
// Kiểm tra ma trận đối xứng qua trục giữa
bool DoiXung = true ;
for int ( i = 0; i < m; i++)
Trang 21LỜI GIẢI CÁ NHÂN: NGUYỄN LÊ ĐỨC TRÍ
Phần 1 - Bài 1 Viết chương trình giải hệ phương trình sau:
- Trước hết người dùng sẽ khai báo biến cho các hệ số a , b , c1 1 1,a2,b2,c ,2 D,Dx, Dy
- Sau đó người dùng sẽ nhập các hệ số a , b , c1 1 1,a2,b2,c2
- Sau khi người dùng nhập vào các hệ số từ bàn phím, chương trình sẽ tiến hành tính toán
và đưa ra kết quả về số nghiệm của hệ phương trình thiết lập được từ các hệ số đã cho.
2 Thuật Toán
a) Mô Tả Thuật Toán
B1: Sử dụng dòng lệnh
Console.OutputEncoding = Encoding.UTF8;
Để đảm bảo rằng Console có hỗ trợ ký tự Unicode
B2: Khai báo kiểu dữ liệu double cho các biến
B3:Nhập vào các hệ số a , b , c1 1 1 ,a2, 2b c, 2 và thiết lập hệ phương trình bậc nhất hai ẩnConsole.Write("Nhập hệ số a1: ");
Trang 22Console.WriteLine("Nghiệm của hệ phương trình trên là: (x; y) = ({0}; {1})", x, y);
- Nếu (D == 0 && Dx == 0 && Dy == 0) thì chương trình sẽ thông báo hệ phương trình có vô số nghiệm qua câu lệnh
Console.WriteLine("Hệ phương trình trên có vô số nghiệm");
- Nếu (D == 0) và (Dx != 0 || Dy != 0) chương trình sẽ thông báo hệ phương trình vô nghiệm qua câu lệnh
Console.WriteLine("Hệ phương trình trên vô nghiệm");
B6: Sử dụng câu lệnh
Console.ReadKey();
để kết thúc chương trình và in ra màn hình kết quả cuối cùng
Trang 23b) Sơ Đồ Khối
c) Mã Nguồn
using System;
Trang 25Phần 2 - Bài 1 Nhập dữ liệu vào mảng có n số nguyên Nhập số nguyên X In ra vị trí các phần tử trong mảng có giá trị bằng X
2 Thuật Toán
a) Mô Tả Thuật Toán
B1: Sử dụng câu lệnh
Console.OutputEncoding = Encoding.UTF8;
Để đảm bảo rằng console hỗ trợ ký tự Unicode
B2: Nhập vào số lượng phần tử của mảng bằng hai câu lệnh
Console.Write("Nhập số lượng phần tử của mảng: ");
int n = int.Parse(Console.ReadLine());
Với là kích thước của mảngn
B3: Khai báo mảng số nguyên có kích thước là n
Với là biến đại diện cho số nguyên Xx
B5: Sử dụng vòng lặp FOR lần nữa để duyệt qua từng phần tử của mảng
Console.Write("Các vị trí của phần tử có giá trị bằng {0} trong mảng là: ", x);
for (int i = 0; i < n; i++)
Trang 26để kết thúc chương trình và in ra màn hình vị trí các phần tử trong mảng có giá trị bằng
số nguyên X được cho trước
Console.Write( "Nhập số lượng phần tử của mảng: " );
n = int int Parse(Console.ReadLine());
[] arr = int new int [n];
Console.WriteLine( "Nhập giá trị cho từng phần tử của mảng:" );
for int ( i = 0; i < n; i++)
x = int int Parse(Console.ReadLine());
Console.Write( "Các vị trí của phần tử có giá trị bằng {0} trong mảng là: " , x);
for int ( i = 0; i < n; i++)
Trang 27Phần 3 - Bài 1 Nhập các phần tử của một ma trận vuông cấp n, kiểm tra ma trận này cóphải là ma trận đối xứng qua đường chéo chính không?
Để đảm bảo rằng console hỗ trợ ký tự Unicode
B2: Nhập vào số cấp của một ma trận vuông bằng hai câu lệnh
Console.Write("Nhập cấp của ma trận vuông: ");
int n = int.Parse(Console.ReadLine());
Với là số cấp của ma trận vuông đó.n
B3: Khai báo và khởi tạo ma trận vuông kích thước n x n bằng câu lệnh
int[,] matrix = new int[n, n];
Với int[,] là kiểu dữ liệu của mảng hai chiều, được sử dụng để lưu trữ dữ liệu của ma trậnvuông
B4: Sử dụng vòng lặp FOR để duyệt qua các hàng và cột của ma trận, và nhập vào các phần tử cho ma trận vuông
for (int i = 0; i < n; i++)
Trang 28Console.Write( "Nhập cấp của ma trận vuông: " );
n = int int Parse(Console.ReadLine());
[,] matrix = int new int [n, n];
bool isSymmetric = true ;
for int ( i = 0; i < n; i++)
Trang 30LỜI GIẢI CÁ NHÂN: BÙI LƯƠNG TRỌNG TRÍ
h Nếu bán kính của mỗi hình tăng lên gấp đôi, thì thể tích sẽ thay đổi như thế nào
Vtru1(sau khi tăng gấp đôi bán kính) = π*h*(2*r)^2
= 4*π*h*r^2
= 4*Vtru
- Tính sự thay đổi thể tích của hình cầu và hình trụ tròn sau khi tăng bán kính là:Hình cầu: Vcau2 = Vcau1 - Vcau = 8*Vcau - Vcau = 7*Vcau = 7*(4*π*R^3)/3Hình trụ tròn: Vtru2 = Vtru1 - Vtru = 4*Vtru - Vtru = 3*Vtru = 3*π*h*r^2
Để đảm bảo rằng Console có thể nhận và xử lý các ký tự Unicode khi nhập
từ bàn phím và hiển thị các ký tự của Unicode đúng cách khi in ra màn hình