Đồ Án Môn Học Cơ Sở Lập Trình Tại Trường Đại Học Kinh Tế TP Hồ Chí Minh

Tiểu luận hướng dẫn tính toán cạnh và góc của tam giác dựa trên hai cạnh và góc giữa, giúp sinh viên nắm vững kiến thức cơ sở lập trình.

Chuyên ngành

Cơ Sở Lập Trình

Người đăng

Ẩn danh

Thể loại

Đồ án
61
3
0

Phí lưu trữ

30 Point

Tóm tắt

I. Tổng quan đồ án môn học Cơ sở lập trình tại UEH 2023

Đồ án môn học Cơ sở lập trình là một hợp phần quan trọng trong chương trình đào tạo tại Trường Đại học Kinh tế TP Hồ Chí Minh (UEH). Đồ án này không chỉ kiểm tra kiến thức lý thuyết mà còn đánh giá năng lực vận dụng vào giải quyết các bài toán thực tế. Sinh viên được yêu cầu sử dụng ngôn ngữ lập trình C# để xây dựng các chương trình hoàn chỉnh, từ phân tích yêu cầu, thiết kế giải thuật đến triển khai và kiểm thử. Thông qua việc thực hiện đồ án, sinh viên củng cố nền tảng tư duy lập trình, rèn luyện kỹ năng làm việc nhóm và chuẩn bị cho các môn học chuyên ngành phức tạp hơn. Đây là bước đệm thiết yếu, giúp sinh viên chuyển đổi từ tư duy lý thuyết sang khả năng phát triển ứng dụng phần mềm một cách có hệ thống và hiệu quả, đáp ứng yêu cầu của ngành Công nghệ và Thiết kế.

1.1. Mục tiêu và yêu cầu của đồ án Cơ sở lập trình

Mục tiêu chính của đồ án môn học Cơ sở lập trình là giúp sinh viên áp dụng các kiến thức cốt lõi đã học để giải quyết một chuỗi bài toán cụ thể. Các bài toán bao quát nhiều chủ đề, từ xử lý số học, hình học, đến các cấu trúc dữ liệu cơ bản như mảng một chiềuma trận. Yêu cầu của đồ án đòi hỏi sinh viên phải có khả năng phân tích vấn đề, lựa chọn giải thuật phù hợp và hiện thực hóa bằng ngôn ngữ lập trình C#. Mỗi bài toán cần được trình bày rõ ràng qua ba phần: Phân tích, Thuật toán (mô tả và sơ đồ khối), và Mã nguồn. Ví dụ, bài toán tính các yếu tố còn lại của tam giác đòi hỏi phải áp dụng đúng định lý hàm cos, hay bài toán mô phỏng trò chơi "Bao – Búa – Kéo" cần xử lý logic điều kiện và tạo số ngẫu nhiên. Việc hoàn thành các yêu cầu này chứng tỏ sinh viên không chỉ nắm vững cú pháp ngôn ngữ mà còn có tư duy logic để xây dựng chương trình chạy đúng và hiệu quả.

1.2. Cấu trúc và phân công nhiệm vụ trong đồ án nhóm

Đồ án được cấu trúc theo hình thức làm việc cá nhân kết hợp với làm việc nhóm. Tài liệu gốc cho thấy mỗi thành viên trong nhóm chịu trách nhiệm giải quyết một bộ bài toán riêng, thể hiện năng lực cá nhân. Cụ thể, sinh viên Nguyễn Huy Hoàng thực hiện các bài toán liên quan đến tam giác, mảng lưu số ngày và nhân ma trận. Sinh viên Nguyễn Nhật Bảo tập trung vào mô phỏng game, tính giá trị đa thức và kiểm tra ma trận đối xứng qua trục giữa. Sinh viên Nguyễn Lê Đức Trí giải quyết hệ phương trình, tìm kiếm trên mảng và kiểm tra ma trận đối xứng qua đường chéo chính. Sinh viên Bùi Lương Trọng Trí xử lý các bài toán về hình học không gian, cấp số cộng và in ma trận theo đường chéo. Bên cạnh đó, có một bài toán chung (Bài chẵn) yêu cầu sự hợp tác của cả nhóm để giải quyết. Sự phân công rõ ràng này, được ghi trong mục "PHÂN CHIA CÔNG VIỆC", giúp đảm bảo mọi thành viên đều đóng góp và phát triển kỹ năng lập trình cá nhân, đồng thời học cách phối hợp trong một dự án lớn hơn.

II. Thách thức thường gặp khi làm đồ án Cơ sở lập trình C

Việc thực hiện đồ án môn học Cơ sở lập trình đặt ra nhiều thách thức cho sinh viên, đặc biệt là những người mới bắt đầu với lập trình C#. Khó khăn không chỉ nằm ở việc viết mã nguồn mà bắt nguồn ngay từ khâu phân tích bài toán và lựa chọn phương pháp tiếp cận. Sinh viên phải chuyển hóa các yêu cầu từ ngôn ngữ tự nhiên sang logic toán học và giải thuật máy tính. Việc xử lý các cấu trúc dữ liệu phức tạp như mảng nhiều chiềuma trận cũng là một rào cản lớn, đòi hỏi sự hiểu biết sâu sắc về chỉ số và các vòng lặp lồng nhau. Hơn nữa, quá trình gỡ lỗi và tối ưu hóa mã nguồn để chương trình chạy đúng và hiệu quả cũng tiêu tốn nhiều thời gian và công sức. Vượt qua những thách thức này là một phần quan trọng của quá trình học tập, giúp sinh viên trưởng thành hơn trong tư duy và kỹ năng lập trình.

2.1. Phân tích bài toán Từ yêu cầu đến giải thuật lập trình

Thách thức đầu tiên và quan trọng nhất là giai đoạn phân tích yêu cầu để xây dựng giải thuật. Một bài toán như "giải hệ phương trình a1x + b1y = c1 và a2x + b2y = c2" đòi hỏi sinh viên phải biết đến các phương pháp toán học như phương pháp Cramer. Trong tài liệu, sinh viên Nguyễn Lê Đức Trí đã phân tích và áp dụng phương pháp này bằng cách tính các định thức D, Dx, Dy để biện luận số nghiệm của hệ. Tương tự, bài toán "kiểm tra ma trận đối xứng qua trục giữa" của Nguyễn Nhật Bảo yêu cầu một giải thuật so sánh phần tử A[i, j] với A[m-i-1, n-j-1]. Nếu không phân tích đúng, sinh viên có thể chọn sai logic so sánh, dẫn đến kết quả không chính xác. Quá trình này đòi hỏi sự kết hợp giữa kiến thức toán học, tư duy logic và khả năng trừu tượng hóa vấn đề, là một kỹ năng khó nhưng vô cùng cần thiết cho lập trình viên.

2.2. Khó khăn trong việc xử lý mảng và ma trận trong C

Xử lý mảng một chiềumảng nhiều chiều (ma trận) là một trong những thử thách kỹ thuật chính trong đồ án Cơ sở lập trình. Các thao tác như nhập, xuất, duyệt và tính toán trên ma trận đòi hỏi phải sử dụng thành thạo các vòng lặp lồng nhau và quản lý chính xác các chỉ số hàng, cột. Ví dụ, bài toán nhân hai ma trận Amxn và Bnxp để tạo ra ma trận Cmxp yêu cầu một giải thuật phức tạp với ba vòng lặp lồng nhau, như phần giải của Nguyễn Huy Hoàng đã trình bày. Một sai sót nhỏ trong việc xác định giới hạn của vòng lặp hoặc truy cập sai chỉ số có thể dẫn đến lỗi IndexOutOfRangeException. Tương tự, bài toán in các phần tử ma trận theo phương đường chéo chính của Bùi Lương Trọng Trí cũng đòi hỏi một logic duyệt mảng phi tuyến tính, phức tạp hơn nhiều so với việc duyệt tuần tự thông thường. Những khó khăn này nhấn mạnh tầm quan trọng của việc hiểu sâu về cấu trúc dữ liệu mảng.

III. Phương pháp giải các bài toán lập trình cơ bản trong đồ án

Để hoàn thành đồ án môn học Cơ sở lập trình, sinh viên tại UEH đã áp dụng nhiều phương pháp và giải thuật nền tảng. Các bài toán được lựa chọn có chủ đích để trang bị cho sinh viên khả năng xử lý các vấn đề từ logic điều kiện, vòng lặp, đến các công thức toán học phức tạp. Việc giải quyết thành công các bài toán này cho thấy năng lực chuyển hóa lý thuyết thành các chương trình máy tính hoạt động được. Các phương pháp này không chỉ là lời giải cho một bài tập cụ thể mà còn là những kỹ thuật lập trình cơ bản có thể tái sử dụng trong nhiều ứng dụng khác nhau. Ví dụ, kỹ thuật xử lý input người dùng, tạo giá trị ngẫu nhiên hay tính toán biểu thức toán học là những viên gạch nền móng cho mọi dự án phần mềm sau này.

3.1. Giải hệ phương trình bậc nhất và bài toán hình học

Trong đồ án, bài toán giải hệ phương trình bậc nhất hai ẩn được tiếp cận bằng phương pháp Cramer, một kỹ thuật hiệu quả dựa trên định thức ma trận. Theo lời giải của Nguyễn Lê Đức Trí, chương trình tính ba định thức chính: D, Dx, và Dy. Dựa trên giá trị của các định thức này, chương trình biện luận kết quả: nếu D khác 0, hệ có nghiệm duy nhất (x = Dx/D, y = Dy/D); nếu D, Dx, Dy đều bằng 0, hệ có vô số nghiệm; và nếu D bằng 0 nhưng Dx hoặc Dy khác 0, hệ vô nghiệm. Đối với các bài toán hình học, như tính các yếu tố còn lại của tam giác khi biết hai cạnh và góc xen giữa, giải thuật của Nguyễn Huy Hoàng đã áp dụng định lý hàm cos c² = a² + b² - 2ab*cos(C) để tìm cạnh còn lại, sau đó tiếp tục dùng định lý này hoặc định lý hàm sin để tìm các góc. Những phương pháp này thể hiện khả năng ứng dụng công thức toán học vào lập trình C#.

3.2. Mô phỏng trò chơi Bao Búa Kéo bằng C

Bài toán mô phỏng trò chơi "Bao – Búa – Kéo" là một ví dụ điển hình về việc sử dụng logic điều kiện và sinh số ngẫu nhiên. Trong lời giải của Nguyễn Nhật Bảo, chương trình trước hết nhận lựa chọn của người chơi (Bao, Búa, hoặc Kéo). Sau đó, máy tính tạo ra một lựa chọn ngẫu nhiên bằng cách sử dụng lớp Random để sinh một số nguyên trong khoảng [0, 2], tương ứng với ba lựa chọn. Bước cuối cùng là so sánh hai lựa chọn để xác định kết quả. Cấu trúc switch-case được sử dụng để xử lý lựa chọn của người chơi, và bên trong mỗi case, các câu lệnh if-else được dùng để so sánh với lựa chọn của máy và đưa ra kết quả "Thắng", "Thua", hoặc "Hòa". Giải thuật này không chỉ đơn giản mà còn rất hiệu quả, minh họa rõ ràng cách xây dựng một chương trình tương tác đơn giản trong C#.

3.3. Xử lý cấp số cộng và tính toán đa thức hiệu quả

Hai bài toán về cấp số cộng và đa thức thể hiện khả năng xử lý chuỗi số và biểu thức toán học. Với bài toán in ra một dãy cấp số cộng, lời giải của Bùi Lương Trọng Trí sử dụng một vòng lặp for đơn giản. Sau khi nhập số hạng đầu u1, công sai d và số lượng phần tử n, vòng lặp sẽ chạy từ i = 1 đến n. Trong mỗi lần lặp, phần tử thứ i được tính bằng công thức ui = u1 + (i - 1) * d và in ra màn hình. Đối với bài toán tính giá trị đa thức F(x) = anXn + an-1Xn-1 + ..., giải thuật của Nguyễn Nhật Bảo cũng sử dụng vòng lặp. Chương trình nhập bậc n, các hệ số của đa thức vào một mảng một chiều, và giá trị x. Vòng lặp for duyệt qua mảng hệ số, ở mỗi bước i, giá trị của a[i] * x^i được cộng dồn vào kết quả cuối cùng, sử dụng hàm Math.Pow(x, i) để tính lũy thừa.

IV. Hướng dẫn xử lý cấu trúc dữ liệu mảng và ma trận C

Xử lý cấu trúc dữ liệu mảng và ma trận là kỹ năng trọng tâm của đồ án môn học Cơ sở lập trình. Các bài toán trong đồ án đòi hỏi sinh viên phải thành thạo việc khai báo, khởi tạo, nhập liệu và duyệt qua các phần tử của mảng một và hai chiều. Từ việc tìm kiếm một giá trị trong mảng một chiều đến các phép toán phức tạp hơn như nhân hai ma trận hay kiểm tra tính đối xứng, mỗi tác vụ đều yêu cầu một giải thuật và kỹ thuật lập trình riêng. Việc nắm vững các kỹ thuật này không chỉ giúp giải quyết các bài toán trong đồ án mà còn là nền tảng để làm việc với các cấu trúc dữ liệu phức tạp hơn trong tương lai, như danh sách liên kết, cây, hay đồ thị. Các lời giải trong đồ án của sinh viên UEH đã minh họa nhiều phương pháp hiệu quả để thao tác với mảng trong lập trình C#.

4.1. Kỹ thuật duyệt mảng một chiều để tìm kiếm phần tử

Bài toán tìm kiếm vị trí của một phần tử X trong mảng một chiều gồm n số nguyên là một bài toán cơ bản nhưng rất quan trọng. Lời giải của Nguyễn Lê Đức Trí đã sử dụng kỹ thuật tìm kiếm tuyến tính (linear search). Giải thuật rất trực tiếp: chương trình sử dụng một vòng lặp for để duyệt qua mảng từ phần tử đầu tiên (chỉ số 0) đến phần tử cuối cùng (chỉ số n-1). Trong mỗi lần lặp, giá trị của phần tử tại vị trí i được so sánh với giá trị X. Nếu hai giá trị bằng nhau, chương trình sẽ in ra vị trí i+1 (do vị trí thường được tính bắt đầu từ 1 cho người dùng). Kỹ thuật này đơn giản, dễ cài đặt và hiệu quả cho các mảng có kích thước nhỏ. Đây là bước đầu tiên để sinh viên làm quen với các giải thuật tìm kiếm, tạo tiền đề cho việc học các thuật toán hiệu quả hơn như tìm kiếm nhị phân (binary search) sau này.

4.2. Cách kiểm tra ma trận đối xứng qua chéo chính và trục giữa

Đồ án đưa ra hai bài toán thú vị về kiểm tra tính đối xứng của ma trận vuông. Để kiểm tra một ma trận đối xứng qua đường chéo chính, lời giải của Nguyễn Lê Đức Trí sử dụng một biến boolean isSymmetric. Giải thuật dùng hai vòng lặp lồng nhau để duyệt nửa dưới của ma trận (với j < i). Tại mỗi vị trí, nó so sánh phần tử matrix[i, j] với phần tử đối xứng qua đường chéo chính là matrix[j, i]. Nếu có bất kỳ cặp nào không bằng nhau, biến isSymmetric được gán giá trị false và vòng lặp bị ngắt. Tương tự, để kiểm tra đối xứng qua trục giữa, Nguyễn Nhật Bảo so sánh phần tử A[i, j] với A[m-i-1, n-j-1]. Cả hai giải thuật đều cho thấy sự am hiểu về cách các phần tử trong ma trận quan hệ với nhau qua các trục đối xứng.

4.3. Thực hiện phép nhân ma trận và in theo đường chéo

Phép nhân ma trận là một trong những phép toán phức tạp nhất được đề cập. Để nhân ma trận Amxn với Bnxp, giải thuật của Nguyễn Huy Hoàng yêu cầu ba vòng lặp lồng nhau. Vòng lặp ngoài cùng duyệt qua các hàng của ma trận kết quả C (i từ 0 đến m-1). Vòng lặp thứ hai duyệt qua các cột của C (j từ 0 đến p-1). Vòng lặp trong cùng (k từ 0 đến n-1) thực hiện tính tổng các tích của các phần tử tương ứng từ hàng i của A và cột j của B. Công thức tính là C[i, j] = Σ(A[i, k] * B[k, j]). Một bài toán khác là in ma trận theo các đường chéo song song với đường chéo chính. Lời giải của Bùi Lương Trọng Trí chia việc in thành ba phần: tam giác trên, đường chéo chính, và tam giác dưới, mỗi phần sử dụng các vòng lặp với logic điều khiển chỉ số phức tạp để truy cập đúng các phần tử theo thứ tự yêu cầu.

V. Ứng dụng mảng nhiều chiều quản lý thông tin sinh viên

Bài toán tổng hợp của nhóm trong đồ án môn học Cơ sở lập trình là một ví dụ xuất sắc về ứng dụng thực tiễn của cấu trúc dữ liệu mảng. Đề bài yêu cầu xây dựng một chương trình quản lý thông tin sinh viên và tự động in ra phiếu điểm tốt nghiệp. Thay vì xử lý các bài toán toán học trừu tượng, bài toán này mô phỏng một tác vụ quản lý dữ liệu quen thuộc, cho thấy lập trình C# có thể được sử dụng để giải quyết các vấn đề trong đời sống. Việc sử dụng mảng nhiều chiều để lưu trữ một tập hợp các bản ghi, mỗi bản ghi có nhiều trường thông tin, là một kỹ thuật phổ biến trong phát triển phần mềm. Bài toán này không chỉ kiểm tra kỹ năng xử lý mảng mà còn cả kỹ năng xử lý chuỗi, ép kiểu dữ liệu và thiết kế giải thuật xếp hạng.

5.1. Xây dựng cấu trúc dữ liệu lưu thông tin sinh viên

Để quản lý thông tin sinh viên, nhóm đã sử dụng một mảng nhiều chiều kiểu chuỗi string[,] arr. Cụ thể, đây là một mảng hai chiều với số hàng bằng số lượng sinh viên và 4 cột. Mỗi hàng của mảng đại diện cho một sinh viên, và mỗi cột lưu trữ một thuộc tính cụ thể. Theo cấu trúc được triển khai, cột 0 lưu họ tên, cột 1 lưu năm sinh, cột 2 lưu điểm trung bình, và cột 3 lưu xếp loại. Việc sử dụng mảng hai chiều string[soluongsinhvien, 4] là một lựa chọn hợp lý để tổ chức dữ liệu một cách có cấu trúc. Chương trình sử dụng các vòng lặp lồng nhau để nhập thông tin cho từng sinh viên, với một cấu trúc switch-case bên trong để xử lý việc nhập liệu cho từng cột thông tin một cách tuần tự. Cách tiếp cận này giúp quản lý một tập dữ liệu đa thuộc tính một cách hiệu quả chỉ bằng cấu trúc mảng cơ bản.

5.2. Giải thuật xếp hạng và in phiếu điểm tốt nghiệp tự động

Phần thử thách nhất của bài toán nhóm là xây dựng giải thuật xếp hạng sinh viên dựa trên điểm trung bình và sau đó in ra các phiếu điểm theo một mẫu cho trước. Đầu tiên, chương trình trích xuất cột điểm trung bình (lưu dưới dạng chuỗi) từ mảng nhiều chiều arr sang một mảng một chiều arr1D. Sau đó, mảng chuỗi này được ép kiểu sang mảng số thực doublearr1D để có thể so sánh. Giải thuật xếp hạng sử dụng hai vòng lặp lồng nhau. Với mỗi sinh viên i, vòng lặp bên trong sẽ duyệt qua tất cả các sinh viên khác j. Nếu điểm của sinh viên i thấp hơn điểm của sinh viên j, biến đếm thứ hạng ranks sẽ tăng lên. Sau khi so sánh với tất cả sinh viên khác, giá trị ranks cuối cùng chính là thứ hạng của sinh viên i. Cuối cùng, một vòng lặp duyệt qua tất cả sinh viên, lấy thông tin từ mảng arr và thứ hạng từ mảng rank để điền vào mẫu phiếu điểm và in ra màn hình một cách tự động.

VI. Bí quyết hoàn thành đồ án Cơ sở lập trình UEH điểm cao

Hoàn thành xuất sắc đồ án môn học Cơ sở lập trình không chỉ đòi hỏi kiến thức về cú pháp lập trình C# mà còn cần một chiến lược làm việc khoa học và tư duy giải quyết vấn đề sắc bén. Chìa khóa thành công nằm ở việc phân tích kỹ lưỡng yêu cầu trước khi bắt tay vào viết mã, xây dựng các giải thuật rõ ràng và có cấu trúc. Việc chia nhỏ các bài toán phức tạp thành những phần đơn giản hơn giúp quá trình triển khai và gỡ lỗi trở nên dễ dàng hơn. Bên cạnh đó, kỹ năng làm việc nhóm hiệu quả, phân công công việc hợp lý và hỗ trợ lẫn nhau cũng là yếu tố quan trọng, đặc biệt trong bài toán tổng hợp. Đồ án này không chỉ là một bài kiểm tra mà còn là cơ hội để sinh viên UEH xây dựng một nền tảng lập trình vững chắc, sẵn sàng cho những thử thách công nghệ trong tương lai.

6.1. Tổng kết kiến thức và kỹ năng đạt được sau đồ án

Sau khi hoàn thành đồ án môn học Cơ sở lập trình, sinh viên đã tích lũy được một loạt kiến thức và kỹ năng quan trọng. Về kiến thức, sinh viên nắm vững cú pháp và các cấu trúc điều khiển cơ bản của lập trình C#, hiểu rõ cách sử dụng các kiểu dữ liệu, biến, toán tử, và các thư viện hệ thống như System.Text hay System.Math. Quan trọng hơn, sinh viên đã có kinh nghiệm thực tế với các cấu trúc dữ liệu nền tảng như mảng một chiềuma trận. Về kỹ năng, sinh viên đã rèn luyện được tư duy giải thuật, khả năng phân tích một bài toán, thiết kế các bước giải quyết và chuyển hóa nó thành mã nguồn. Kỹ năng gỡ lỗi, kiểm thử chương trình và trình bày tài liệu một cách khoa học cũng được cải thiện đáng kể. Đây là những kỹ năng cốt lõi, là hành trang không thể thiếu cho bất kỳ ai theo đuổi ngành công nghệ.

6.2. Định hướng phát triển từ nền tảng Cơ sở lập trình

Môn học Cơ sở lập trình và đồ án của nó tại Trường Đại học Kinh tế TP Hồ Chí Minh mở ra nhiều hướng phát triển cho sinh viên. Nền tảng vững chắc về lập trình C# và tư duy giải thuật là tiền đề để tiếp cận các lĩnh vực nâng cao hơn. Sinh viên có thể học sâu hơn về lập trình hướng đối tượng (OOP), một mô hình lập trình quan trọng được C# hỗ trợ mạnh mẽ. Từ đó, các em có thể phát triển các ứng dụng desktop với Windows Forms hoặc WPF, xây dựng website và dịch vụ web với ASP.NET, hay thậm chí là phát triển game với Unity, một game engine hàng đầu sử dụng C# làm ngôn ngữ chính. Những kiến thức về xử lý mảng nhiều chiều và quản lý dữ liệu trong đồ án cũng là bước khởi đầu cho việc tìm hiểu về cơ sở dữ liệu và các hệ quản trị cơ sở dữ liệu như SQL Server. Rõ ràng, đây là một môn học nền móng, tạo ra bệ phóng vững chắc cho sự nghiệp trong ngành công nghệ.

10/07/2025
Tiểu luận đồ án môn học cơ sở lập trình 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

Trích đoạn nội dung tài liệu

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Ế  ĐỒ ÁN MÔN HỌC CƠ SỞ LẬP TRÌNH GVHD: TS.GVC Nguyễn Quốc Hùng Nhóm thực hiện: Nhóm 2 Nguyễn Huy Hoàng (Trưởng nhóm) Nguyễn Nhật Bảo Nguyễn Lê Đức Trí Bùi Lương Trọng Trí Tp. Hồ Chí Minh, Tháng 12 Năm 2023 MỤ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) ………………………. 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……. Bài 6: Nhập vào 2 ma trận Amxn và Bnxp tính kết quả của Cmxp =Amxn * Bnxp….… 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. 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 + an-1Xn-1 +.

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 + b1y = c1 a2x + b2y = c2. 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……………………………………………………. 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.

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

61 TÀI LIỆU THAM KHẢO…………………. Too long to read on your phone? Save to read later on your computer Save to a Studylist PHÂN CHIA CÔNG VIỆC Nội dung Phụ trách 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í LỜ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.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 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.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.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 góc C= {0}", C); b) Sơ Đồ Khối c) Mã nguồn using System.Text; namespace bai6._1 { internal class Program { static void Main(string[] args) { Console.Unicode; int a, b, A; Console.WriteLine("Tam giác không tồn tại"); return; } else { double c = 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 góc C= {0}", C); } } } } 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 1. 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. 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.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 = int.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 class Program { static void Main(string[] args) { Console.Write("Nhập tháng : "); int t = int.WriteLine("Số ngày của tháng {0} là: {1}", t, soNgayThang[t - 1]); } } } Phần 3- Bài 6. Nhập vào 2 ma trận Amxn và Bnxp tính kết quả của Cmxp =Amxn * Bnxp 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,.

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.Unicode; Bước 2: khởi tạo các biến i, j, k, r1, c1, r2, c2, sum = 0 int i, j, k, r1, c1, r2, c2, sum = 0; 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.ReadLine()); Bước 5: nhập số cột và hàng của ma trận 2 Console.Write("số cột của ma trận 1 phải bằng số hàng của ma trận 2"); } Bước 7: nhập các thành phần của ma trận 1 Console.ReadLine()); } } Bước 8: nhập các thành phần của ma trận 2 Console.ReadLine()); } } Bước 9: in ra màn hình ma trận 1 Console.Write("{0}\t", arr1[i, j]); } Bước 10: in ra màn hình ma trận 2 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; 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; } } Bước 12: in ra màn hình ma trận tích Console.Write("{0}\t", ma_tran_tich[i, j]); } } b) Mã Nguồn using System.Text; namespace bai6_p3 { internal class Program { static void Main(string[] args) { Console.Unicode; int i, j, k, r1, c1, r2, c2, sum = 0; int[,] arr1 = new int[50, 50]; int[,] arr2 = new int[50, 50]; int[,] ma_tran_tich = new int[50, 50]; 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("{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.ReadKey(); } } } PHẦN 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. 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.

Thuật Toán a) Mô Tả Thuật Toán: ● Bước 1: Sử dụng lệnh Console.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.

Nội dung được bảo vệ bản quyền — Tải xuống đầy đủ