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ủamộ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 * Bmxnnxpmxpmxnnxp… …10
LỜI GIẢI CÁ NHÂN: NGUYỄN NHẬT BẢOPhầ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 + an-1Xn-12x210……….………… 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 = c11a2x + b y = c22 ……… 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ả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 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ểmtrung 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ácphiếu điểm theo mẫu sau: -
BẢNG ĐIỂM TỐT NGHIỆPCấ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 4PHÂN CHIA CÔNG VIỆC
Bài 6 - phần 1, 2, 3 Nguyễn Huy HoàngBài 2 - phần 1, 2, 3 Nguyễn Nhật BảoBà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àmTrình bày đồ án và định dạng Word Cả nhóm cùng làmCheck đạo văn Turnitin Nguyễn Lê Đức Trí
Too long to read onyour phone? Save to
read later on yourcomputer
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ána) 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 lần lượt số đo của cạnh A, cạnh B, số đo góc giữa hai cạnh A,B bằng các câu lệnh
Console.Write("nhập vào cạnh A: ");Console.Write("nhập vào cạnh B: ");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
a = Convert.ToInt32(Console.ReadLine()); ; b = Convert.ToInt32(Console.ReadLine()); ; A = Convert.ToInt32(Console.ReadLine()); ;
Bước 4: kiểm tra các giá trị vừa nhập có thỏa mãn điều kiện để tạo thành một tam giác không
(a < 0 || b < 0 || A >= 180)if {
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)); double C = Math.Acos((c * c + b * b - a * a) / (2 * c * b)); double B = 180 - A - C;
Bước 5: Xuất các giá trị
Console.WriteLine("số đo cạnh C= {0}", c); Console.WriteLine("số đo góc B= {0}", B); Console.WriteLine("số đo góc C= {0}", C);
Trang 6b) Sơ Đồ Khối
Trang 7c) Mã nguồn
using System.Text;namespace bai6._1{
internal classProgram {
static void Main(string[] args) {
Console.OutputEncoding = Encoding.Unicode; Console.InputEncoding = Encoding.Unicode; a, b, A;int
Console.Write("nhập vào cạnh A: "); a = Convert.ToInt32(Console.ReadLine()); ; Console.Write("nhập vào cạnh B: "); b = Convert.ToInt32(Console.ReadLine()); Console.Write("nhập vào góc giữa A và B: "); A = Convert.ToInt32(Console.ReadLine()); (a < 0 || b < 0 || A >= 180)if
{
Console.WriteLine("Tam giác không tồn tại"); return;
} else {
double c = Math.Sqrt(a * a + b * b - 2 * a * b * Math.Cos(A)); double C = Math.Acos((c * c + b * b - a * a) / (2 * c * b)); double B = 180 - A - C;
Console.WriteLine("số đo cạnh C= {0}", c); Console.WriteLine("số đo góc B= {0}", B); Console.WriteLine("số đo góc C= {0}", C); }
} }}
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 t1 Phân Tích
Khởi tạo mảng (soNgayThang) 1 chiều với kích thước 12, mỗi phần tử lưu số ngày của một tháng.
Nhập tháng t trong phạm vi từ 1-12.
Truy cập vào phần tử thứ t của mảng (soNgayThang) để lấy số ngày của tháng t.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: 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
if (t < 1 || t > 12) {
Console.WriteLine("Giá trị của tháng không hợp lệ!"); return;
}
Bước 5: Khởi tạo mảng (soNgayThang) 1 chiều với kích thước 12, mỗi phần tử lưu số ngày của một thá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]);b) Mã nguồn
using System.Text;namespace ConsoleApp7{
internal classProgram {
static void Main(string[] args) {
Console.OutputEncoding = Encoding.Unicode; Console.InputEncoding = Encoding.Unicode; Console.Write("Nhập tháng : "); t = intint.Parse(Console.ReadLine());
Trang 9Console.WriteLine("Giá trị của tháng không hợp lệ!"); return;
}
[] soNgayThang = intnew 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 * Bmxnnxpmxpmxnnxp
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];
Bước 4: nhập số cột và hàng của ma trận 1
Console.WriteLine("Nhập số cột, hàng của ma trận 1"); Console.Write("Nhập số hàng: ");
r1 = Convert.ToInt32(Console.ReadLine()); Console.Write("Nhập số cột: "); c1 = Convert.ToInt32(Console.ReadLine());
Bước 5: nhập số cột và hàng của ma trận 2
Console.WriteLine("Nhập số cột, hàng của ma trận 2"); Console.Write("Nhập số hàng ");
r2 = Convert.ToInt32(Console.ReadLine()); Console.Write("Nhập số cột: "); c2 = Convert.ToInt32(Console.ReadLine());
Bước 6: kiểm tra các giá trị vừa nhập cho ma trận 1,2 có thỏa điều kiện của phép nhân ma trận
(c1 != r2)if {
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 11Bước 7: nhập các thành phần của ma trận 1
Console.Write("Nhập các phần tử của ma trận 1:\n"); (i = 0; i < r1; i++)
for {
for (j = 0; j < c1; j++) {
Console.Write("phần tử - [{0}],[{1}]: ", i, j); arr1[i, j] = Convert.ToInt32(Console.ReadLine()); }
}
Bước 8: nhập các thành phần của ma trận 2
Console.Write("Nhập các phần tử của ma trận 2:\n");for (i = 0; i < r2; i++)
for (j = 0; j < c2; j++) {
Console.Write("Phần tử - [{0}],[{1}]: ", i, j); arr2[i, j] = Convert.ToInt32(Console.ReadLine()); }
Bước 9: in ra màn hình ma trận 1
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]);}
Bước 10: in ra màn hình ma trận 2
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]);}
Bước 11: tính tích hai ma trận
for (i = 0; i < r1; i++) for (j = 0; j < c2; j++) ma_tran_tich[i, j] = 0;
(i = 0; i < r1; i++)for
{
for (j = 0; j < c2; j++) {
sum = 0; for (k = 0; k < c1; k++) sum = sum + arr1[i, k] * arr2[k, j]; ma_tran_tich[i, j] = sum; }
}
Bước 12: in ra màn hình ma trận tích
Trang 12for (i = 0; i < r1; i++) {
Console.Write("\n"); for (j = 0; j < c2; j++) {
Console.Write("{0}\t", ma_tran_tich[i, j]); }
}b) Mã Nguồn
using System.Text;namespace bai6_p3{
internal classProgram {
static void Main(string[] args) {
Console.OutputEncoding = Encoding.Unicode; Console.InputEncoding = Encoding.Unicode; i, j, k, r1, c1, r2, c2, sum = 0;int [,] arr1 = intnew int [50, 50]; [,] arr2 = intnew int [50, 50]; [,] ma_tran_tich = intnew int [50, 50];
Console.WriteLine("Nhập số cột, hàng của ma trận 1"); Console.Write("Nhập số hàng: ");
r1 = Convert.ToInt32(Console.ReadLine()); Console.Write("Nhập số cột: "); c1 = Convert.ToInt32(Console.ReadLine()); Console.WriteLine("Nhập số cột, hàng của ma trận 2"); Console.Write("Nhập số hàng ");
r2 = Convert.ToInt32(Console.ReadLine()); Console.Write("Nhập số cột: "); c2 = Convert.ToInt32(Console.ReadLine()); (c1 != r2)if
{
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"); }
else {
Console.Write("Nhập các phần tử của ma trận 1:\n"); for (i = 0; i < r1; i++)
{
for (j = 0; j < c1; j++) {
Console.Write("phần tử - [{0}],[{1}]: ", i, j); arr1[i, j] = Convert.ToInt32(Console.ReadLine()); }
}
Console.Write("Nhập các phần tử của ma trận 2:\n"); for (i = 0; i < r2; i++)
{
for (j = 0; j < c2; j++) {
Console.Write("Phần tử - [{0}],[{1}]: ", i, j);
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]); }
for (i = 0; i < r1; i++) for (j = 0; j < c2; j++) ma_tran_tich[i, j] = 0; for (i = 0; i < r1; i++) {
for (j = 0; j < c2; j++) {
sum = 0; for (k = 0; k < c1; k++) sum = sum + arr1[i, k] * arr2[k, j]; ma_tran_tich[i, j] = sum; }
}
Console.Write("\n Tích 2 ma trận là \n"); for (i = 0; i < r1; i++)
{
Console.Write("\n"); for (j = 0; j < c2; j++) {
Console.Write("{0}\t", ma_tran_tich[i, j]); }
} }
Console.Write("\n\n");
Console.ReadKey(); }
}}
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ána) 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 15// 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(); LuaChonMay = random.Next(0, 3);
Console.WriteLine("Lựa chọn của máy: {0}, (0: Bao, 1: Búa, 2: Kéo)", LuaChonMay); // So sánh lựa chọn của người chơi và máy
switch (LuaChonNguoiChoi) {
case"Bao": (LuaChonMay == 0)if {
KetQua = "Hòa"; }
else if (LuaChonMay == 1) {
KetQua = "Bạn thắng"; }
else {
KetQua = "Máy thắng";
Trang 16case"Búa": (LuaChonMay == 1)if {
KetQua = "Hòa"; }
else if (LuaChonMay == 0) {
KetQua = "Máy thắng"; }
else {
KetQua = "Bạn thắng"; }
break; case"Kéo": (LuaChonMay == 2)if {
KetQua = "Hòa"; }
else if (LuaChonMay == 1) {
KetQua = "Máy thắng"; }
else {
KetQua = "Bạn thắng"; }
break; default:
KetQua = "Lựa chọn không hợp lệ"; break;
}
// 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
1 Phân Tích:
Input: Bậc n của F(x), giá trị xOutput: Giá trị của biểu thức F(x)
Trang 172 Thuật Toána) 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ứcHệ 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)
i = 0: F(x) = a[0]i = 1: F(x) = a[0] + a[1]xi = 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 các hệ số của đa thức
Console.WriteLine("Nhập các hệ số của đa thức: "); for int ( i = 0; i <= n; i++)
{
Console.Write("Nhập hệ số của x bậc {0} = ", i); a[i] = Convert.ToDouble(Console.ReadLine()); }
// 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
double f = 0; for int ( i = 0; i <= n; i++) {
f += a[i] * Math.Pow(x, i); }
// In ra kết quả của đa thức
Console.WriteLine("F(x) = {0}", f); Console.ReadKey();
}
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ậnOutput: 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ầntử 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ầntử 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”.
b) Mã Nguồn
static void Main(string[] args){
Console.OutputEncoding = Encoding.UTF8; // Nhập số hàng và số cột của ma trận
Console.Write("Nhập số hàng của ma trận A: "); m = intint.Parse(Console.ReadLine()); Console.Write("Nhập số cột của ma trận A: "); n = intint.Parse(Console.ReadLine()); // Khởi tạo ma trận
[,] A = intnew int [m, n];
// Nhập vào các phần tử của ma trận
for int ( i = 0; i < m; i++) {
for int ( j = 0; j < n; j++) {
Console.Write("Nhập phần tử A[{0},{1}]: ", i, j); A[i, j] = Convert.ToInt32(Console.ReadLine()); }
}
// Kiểm tra ma trận đối xứng qua trục giữa
bool DoiXung = true; for int ( i = 0; i < m; i++) {
for int ( j = 0; j < n; j++) {
(A[i, j] != A[m - i - 1, n - j - 1])if {
DoiXung = false; break; } }
(!DoiXung) ifbreak; }
// Hiển thị kết quả
(DoiXung)if {
Console.WriteLine("Ma trận A đối xứng qua trục giữa."); }
else {
Console.WriteLine("Ma trận A không đối xứng qua trục giữa."); }
Console.ReadKey();}
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: a1x + b y = c11 a2x + b y = 2
1 Phân Tích
- Trong C#, để giải hệ phương trình bậc nhất hai ẩn ta dùng phương pháp Cramer Phương pháp Cramer là phương pháp tiếp cận đặc biệt khi hệ phương trình có số phương trình bằng số ẩn sử dụng các định thức của ma trận để giải, và hoàn toàn có thể áp dụng vào hệ phương trình bậc nhất hai ẩn Cách thực hiện như sau:
- Trước hết người dùng sẽ khai báo biến cho các hệ số a , b , c111,a2,b2,c ,2 D,Dx, Dy
- Sau đó người dùng sẽ nhập các hệ số a , b , c111,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ánvà đư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ána) Mô Tả Thuật ToánB1: 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 , c111 ,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: ");
a1 = double.Parse(Console.ReadLine());Console.Write("Nhập hệ số b1: ");b1 = double.Parse(Console.ReadLine());Console.Write("Nhập hệ số c1: ");c1 = double.Parse(Console.ReadLine());Console.Write("Nhập hệ số a2: ");a2 = double.Parse(Console.ReadLine());Console.Write("Nhập hệ số b2: ");b2 = double.Parse(Console.ReadLine());Console.Write("Nhập hệ số c2: ");c2 = double.Parse(Console.ReadLine());
Console.WriteLine("Hệ phương trình bậc nhất hai ẩn: \n{0}x + {1}y = {2} \n{3}x + {4}y = {5}", a1, b1, c1, a2, b2, c2);
B4: Sử dụng phương pháp Cramer để tính các định thức D, D , D xy
D = a1 * b2 - a2 * b1;Dx = c1 * b2 - c2 * b1;Dy = a1 * c2 - a2 * c1;
B5: Sử dụng cấu trúc điều khiển rẽ nhánh IF… ELSE để xét các trường hợp - Nếu (D != 0) thì
x = Dx / D;y = Dy / D;
Chương trình sẽ cho ra kết quả nghiệm của hệ phương trình
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 24namespace Phan1Bai1{
classPhan1Bai1 {
public static void Main() {
Console.OutputEncoding = Encoding.UTF8; double a1, a2, b1, b2, c1, c2, x, y, D, Dx, Dy; Console.Write("Nhập hệ số a1: "); a1 = double.Parse(Console.ReadLine()); Console.Write("Nhập hệ số b1: "); b1 = double.Parse(Console.ReadLine()); Console.Write("Nhập hệ số c1: "); c1 = double.Parse(Console.ReadLine()); Console.Write("Nhập hệ số a2: "); a2 = double.Parse(Console.ReadLine()); Console.Write("Nhập hệ số b2: "); b2 = double.Parse(Console.ReadLine()); Console.Write("Nhập hệ số c2: "); c2 = double.Parse(Console.ReadLine());
Console.WriteLine("Hệ phương trình bậc nhất hai ẩn: \n{0}x + {1}y = {2} \n{3}x + {4}y= {5}", a1, b1, c1, a2, b2, c2);
D = a1 * b2 - a2 * b1; Dx = c1 * b2 - c2 * b1; Dy = a1 * c2 - a2 * c1; (D != 0)if { x = Dx / D; y = Dy / D;
Console.WriteLine("Nghiệm của hệ phương trình trên là: (x; y) = ({0}; {1})", x, y); }
else if (D == 0 && Dx == 0 && Dy == 0) {
Console.WriteLine("Hệ phương trình trên có vô số nghiệm"); }
else if (D == 0 && (Dx != 0 || Dy != 0)) {
Console.WriteLine("Hệ phương trình trên vô nghiệm"); }
Console.ReadLine(); Console.ReadKey(); }
}}
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ána) Mô Tả Thuật ToánB1: 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ệnhConsole.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à nint n = int.Parse(Console.ReadLine());
Tiếp đến, sử dụng vòng lặp FOR để nhập từng phần tử cho mảng, với là đại diện choithứ tự phần tử của mảng
for (int i = 0; i < n; i++){
Console.Write("Phần tử {0}: ", i + 1); arr[i] = int.Parse(Console.ReadLine());}
B4: Nhập vào số nguyên X thông qua hai câu lệnhConsole.Write("Nhập số nguyên X: ");
int x = int.Parse(Console.ReadLine());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ảngConsole.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++)
{
if (arr[i] == x) {
Console.WriteLine("Vị trí {0}", i + 1); }
}
Kiểm tra nếu giá trị của phần tử tại vị trí bằng với giá trị của , thì in ra vị trí đó.i xB6: Sử dụng câu lệnh
Console.ReadKey();
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ằngsố nguyên X được cho trước.
b) Mã Nguồn
using System;using System.Text;namespace Phan2Bai1{
classPhan2Bai1 {
public static void Main() {
Console.OutputEncoding = Encoding.UTF8; Console.Write("Nhập số lượng phần tử của mảng: "); n = intint.Parse(Console.ReadLine());
[] arr = intnew 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++)
{
Console.Write("Phần tử {0}: ", i + 1); arr[i] = int.Parse(Console.ReadLine()); }
Console.Write("Nhập số nguyên X: "); x = intint.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++)
{
(arr[i] == x)if {
Console.WriteLine("Vị trí {0}", i + 1); }
}
Console.ReadKey(); }
}}
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?
Console.OutputEncoding = Encoding.UTF8; Để đả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ệnhConsole.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ệnhint[,] 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
Console.WriteLine("Nhập các phần tử của ma trận: ");for (int i = 0; i < n; i++)
for (int j = 0; j < n; j++) {
Console.Write("Phần tử [{0},{1}]: ", i + 1, j + 1); matrix[i, j] = int.Parse(Console.ReadLine()); }
B5: Tiếp tục sử dụng hai vòng lặp FOR để so sánh các phần tử qua đường chéo chính, kiểm tra xem ma trận có phải là ma trận đối xứng qua đường chéo chính khôngbool isSymmetric = true;
for (int i = 0; i < n; i++){
for (int j = 0; j < i; j++) {
if (matrix[i, j] != matrix[j, i])
Trang 28{
isSymmetric = false; break;
} }
if (!isSymmetric) break;}
Nếu tìm thấy ít nhất một cặp phần tử không đối xứng, biến isSymmetric được đặt thành false.B6: Sử dụng câu lệnh điều kiện
if (isSymmetric){
Console.WriteLine("Ma trận là ma trận đối xứng qua đường chéo chính.");}
Console.WriteLine("Ma trận không phải là ma trận đối xứng qua đường chéo chính.");}
Để in ra kết quả dựa trên giá trị của biến isSymmetricB7: Sử dụng câu lệnh
classBai31 {
public static void Main() {
Console.OutputEncoding = Encoding.UTF8; Console.Write("Nhập cấp của ma trận vuông: "); n = intint.Parse(Console.ReadLine()); [,] matrix = intnew int [n, n];
Console.WriteLine("Nhập các phần tử của ma trận: "); for int ( i = 0; i < n; i++)
{
for int ( j = 0; j < n; j++) {
Console.Write("Phần tử [{0},{1}]: ", i + 1, j + 1); matrix[i, j] = int.Parse(Console.ReadLine()); }
}
bool isSymmetric = true; for int ( i = 0; i < n; i++) {
for int ( j = 0; j < i; j++) {
(matrix[i, j] != matrix[j, i])if {
isSymmetric = false; break; }
Trang 29}
(isSymmetric)if {
Console.WriteLine("Ma trận là ma trận đối xứng qua đường chéo chính"); }
else {
Console.WriteLine("Ma trận không phải là ma trận đối xứng qua đường chéo chính"); }
Console.ReadKey(); }
}}
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.1 Phân Tích:
Chương trình yêu cầu người dùng nhập bán kính của hình cầu, bán kính và chiều cao củahình trụ tròn Sau đó tính thể tích hình cầu và hình trụ tròn sau khi tăng gấp đôi bán kính.- Ta có công thức tính thể tích hình cầu và hình trụ tròn là:
Hình cầu:
Vcau = (4*π*R^3)/3Hình trụ tròn:
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^22 Thuật Toán:
a) Mô Tả Thuật ToánBước 1: Sử dụng
Console.InputEncoding = Encoding.Unicode;Console.OutputEncoding = Encoding.Unicode;
Để đảm bảo rằng Console có thể nhận và xử lý các ký tự Unicode khi nhậptừ 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.