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

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

24 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ả Trần Mạnh Quỳnh, Đinh Mạnh Đức
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 2023
Thành phố Tp. Hồ Chí Minh
Định dạng
Số trang 24
Dung lượng 1,63 MB

Nội dung

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ộttam giác.. 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

Trang 1

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Ế

Giảng Viên: TS Đặng Ngọc Hoàng Thành

Tp Hồ Chí Minh, Ngày 14 tháng 12 năm 2023

Trang 3

ĐỀ BÀIBài 1 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 2 P = n+1 1

√1+n+1

√2+n+1

√3+…+ n+1√n+1Có 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

Bài 3 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 5 Đọc vào một chuỗi, cắt bỏ những khoảng trống thừa trong chuỗi

Ví dụ S=” Noi vong tay lon - Trinh Cong Son “Kết quả in ra ”Noi vong tay lon - Trinh Cong Son“

Bài 6

CHẴN: theo số thứ tựCho một 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 ratoàn bộ các phiếu điểm theo mẫu như 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 4

2 Thuật Toán

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

Để tính các số đo còn lại của tam giác khi biết số đo hai cạnh của tam giác và số đo củagóc xen giữa hai cạnh thì chúng em dùng định lý Cosin: c2

=a b2+ 2

−2 ab∗cos ( A) để tínhmột cạnh còn lại, dùng định lý Sin:

Dưới đây là các bước trình bày thuật toán của bài toán trên:

Bước 1: Nhập 2 cạnh và góc xen giữa 2 cạnh của tam giác Khai báo biến cạnh a, b, gócC là double

Bước 2: Khai báo biến double cho cạnh c, góc A và góc B.Bước 3: Đầu tiên chúng em sẽ tính cạnh c với định lý Cosin:

c = Math.Sqrt(a * a + b * b - 2 * a * b * Math.Cos(C*Math.PI/180))trong đó c là số đo cạnh còn lại, Math.Sqrt() là căn bậc 2 của hàm, Math.Cos(C) là cosincủa góc C

Bước 4: Để tính số đo 1 trong 2 góc còn lại chúng em sử dụng định lý Sin:

A

a

b c

Trang 5

A = (a * Math.Sin(C * Math.PI / 180) / c) * 180 / Math.PIBước 5: Tính số đo góc còn lại Gọi góc còn lại là B:

B = 180 – A – CBước 6: Cuối cùng xuất ra kết quả các số đo còn lại của tam giác là cạnh c, góc A, B.Bước 7: Kết thúc

Console.WriteLine( "Nhập dữ liệu cạnh a:" ); double a = double Parse(Console.ReadLine());

Begin

EndNhập 2 cạnhvà 1 góc xen

giữa

c = Math.Sqrt(a * a + b * b - 2 * a * b *Math.Cos(C*Math.PI/180))A = (a * Math.Sin(C * Math.PI / 180) / c) * 180 / Math.PI

B = 180 - A - C

Xuất kết quả

Trang 6

Console.WriteLine( "Nhập dữ liệu cạnh b:" ); double b = double Parse(Console.ReadLine()); Console.WriteLine( "Nhập dữ liệu góc C:" ); double C = double Parse(Console.ReadLine()); double c, B, A;

c = Math.Sqrt((a * a) + (b * b) - 2 * a * b * Math.Cos(C * Math.PI / 180)); A = (a * Math.Sin(C * Math.PI / 180) / c) * 180 / Math.PI;

B = 180 - A - C; Console.WriteLine( "Đáp án cạnh c là: {0}" , c); Console.WriteLine( "Đáp án góc A là: {0}" , A); Console.WriteLine( "Đáp án góc B là: {0}" , B); Console.ReadLine();

2 Thuật Toán

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

Đầu tiên chúng em sẽ phân tích biểu thức dưới mẫu gán cho P và sử dụng vòng lặp for.Với n của nhóm em bằng 6 nên n+1 căn của phương trình là căn bậc 7 Biểu thức sẽ códạng như sau:

P = 7

√1+7

√2+7√3+7

√4+7

√5+7

√6+7√7Bước 1: Nhập số thứ tự của bạn vào n Khai báo biến int n.Bước 2: Gán biểu thức dưới mẫu (double) P và khởi tạo với giá trị P = 0.Bước 3: Khởi tạo int i = n Sử dụng vòng lặp for để tạo ra biểu thức căn lồng căn như đềbài Giá trị chạy từ i trở về 1

Bước 4: Trong máy tính không có hàm căn bậc 7 nên ta sử dụng hàm Math.Pow() để thaythế hàm Math.Sqrt() Biểu thức P = Math.Pow(i + P, (double) 1 / (n + 1)) Ví dụ i = 7, P =0 thì P = 7

1 Tương tự i = 6 thì P = (6+7¿¿71)

Trang 7

b) Mã Nguồn

static void Bai2() {

Console.InputEncoding = Encoding.UTF8; Console.OutputEncoding = Encoding.UTF8; Console.Clear();

Console.WriteLine( "Tính P" ); Console.Write( "Nhập số thứ tự của bạn: " ); int n = int Parse(Console.ReadLine()); double P = 0;

for int ( i = n; i >= 1; i ) {

P = Math.Pow(i + P, ( double )1 / (n + 1)); }

double kq = 1.0 / P; Console.WriteLine( "Tổng của P là: {0}" , kq); Console.ReadLine();

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

Bước 1: Tạo mảng một chiều int [] A có 4 phần tử chứa các ngày của tháng.Bước 2: Yêu cầu người dùng nhập tháng muốn tìm Khai báo biến int t.Bước 3: Dùng lệnh switch – case để chọn các tháng từ 1 - 12.Bước 4: Nếu t là số 1, 3, 5, 7, 8, 10, 12 thì chạy phần tử ở vị trí số 3 của mảng A, nếukhông phải thì chạy qua Bước 5

Bước 5: Nếu t là số 4, 6, 9, 11 thì chạy phần tử ở vị trí số 2 của mảng A, nếu không phảithì chạy qua Bước 6

Bước 6: Nếu t là số 2 thì chạy phần tử ở vị trí số 0 và vị trí số 1 của mảng A, nếu khôngphải thì chạy qua Bước 7

Bước 7: Nếu t không thuộc từ 1 12 trong lệnh switch – case thì sẽ in ra dòng chữ:“Nhập sai tháng!!!” và dừng lệnh switch – case

Trang 8

Console.Clear(); int [] A = { 28, 29, 30, 31 }; Trolai:

Console.WriteLine( "Nhập tháng bạn muốn tìm:" ); int t = int Parse(Console.ReadLine()); switch (t)

{ case 1: case 3: case 5: case 7: case 8: case 10: case 12: Console.WriteLine( "Tháng {0} có {1} ngày" , t, A[3]); goto Trolai;

case 4: case 6: case 9: case 11: Console.WriteLine( "Tháng {0} có {1} ngày" , t, A[2]); goto Trolai;

case 2: Console.WriteLine( "Tháng {0} có {1} hoặc {2} ngày" , t, A[0], A[1]); goto Trolai;

default : Console.WriteLine( "Nhập sai tháng!!!" ); break ;

} Console.ReadLine(); }

Trang 9

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

Bước 1: Khởi tạo biến string chuoi.Bước 2: Yêu cầu người dùng nhập vào chuỗi cần xóa khoảng trống thừa.Bước 3: Gán chuỗi nhập từ bàn phím vào chuoi

Bước 4: Hiển thị chuỗi vừa nhập vào ban đầu.Bước 5: Gán chuoi = chuoi.Trim(), cho phép cắt bỏ ký tự trắng ở hai đầu chuỗi.Bước 6: Tạo vòng lặp while (chuoi.IndexOf(“ ”) > 0) Lệnh IndexOf có tác dụng duyệtcác khoảng trắng trong chuỗi, khoảng trắng nào lớn hơn 0 thì sang bước 7

Bước 7: Sử dụng phương thức Replace để thay thế các khoảng trắng:chuoi = chuoi.Replace(“ ”, “ ”)

Bước 8: In chuỗi đã xóa các khoảng trống và kết thúc

b) Mã Nguồn

static void Bai5() {

Console.InputEncoding = Encoding.UTF8; Console.OutputEncoding = Encoding.UTF8; Console.Clear();

string chuoi; Console.WriteLine( "Nhập vào một chuỗi cần xóa: " ); chuoi = Console.ReadLine();

Console.WriteLine( "Chuỗi ban đầu: " + chuoi); chuoi = chuoi.Trim();

while (chuoi.IndexOf( " " ) > 0) {

chuoi = chuoi.Replace( " " " " , ); }

Console.WriteLine( "Chuỗi sau khi đã xóa khoảng trống: " + chuoi); Console.ReadLine();

Trang 10

BÀI 6: Cho một 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 như 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

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

Bước 1: Khởi tạo phương thức static void NhapTT1SV(object[] sv, int i).Bước 2: Khởi tạo 3 biến “sv[0]”, “sv[1]”, “sv[2]” tương ứng với “Tên sinh viên”, “Nămsinh của sinh viên”, “Điểm trung bình của sinh viên”

Bước 3: Chuyển sang dạng double: double x = (double) sv[2].Bước 4: Khởi tạo nhánh if (x >= 0 && x <= 4.0)

Bước 5: Khởi tạo nhánh if (x < 1.0) lồng trong nhánh if ở trên phía trên.Bước 6: Nếu x >= 0 && x <= 4.0 thì chạy sang Bước 8

Bước 7: Nếu x không nằm trong khoảng đó thì sẽ quay lại Bước 4.Bước 8: Xét nhánh if, nếu x < 1.0 thì sv[3] = “Kém”; nếu không thì qua Bước 9.Bước 9: Nếu x >= 1.0 && x < 2.0 thì sv[3] = “Yếu”; nếu không thì qua Bước 10.Bước 10: Nếu x >= 2.0 && x < 2.5 thì sv[3] = “Trung bình”; nếu không thì qua Bước 11.Bước 11: Nếu x >= 2.5 && x < 3.2 thì sv[3] = “Khá”; nếu không thì qua Bước 12.Bước 12: Nếu x >= 3.2 && x < 3.6 thì sv[3] = “Giỏi”; nếu không thì qua Bước 13.Bước 13: Nếu x >= 3.6 && x <= 4.0 thì sv[3] = “Xuất sắc”

Trang 11

Bước 14: Khởi tạo phương thức static void SapXep(object[][] sv1).Bước 15: Khởi tạo vòng lặp for (int i = 0; i < sv1.Length – 1; i++).Bước 16: Khởi tạo vòng lặp for (int j = i + 1; sv1.Length; j++) lồng trong vòng lặp for ởtrên.

Bước 17: Khởi tạo nhánh if ((double)sv1[i][2] < (double)sv1[j][2]) lồng trong vòng lặpfor thứ hai, khởi tạo biến sobject[] a

Bước 18: Nếu điểm sinh viên 1 nhỏ hơn điểm sinh viên 2 thì hoán đổi điểm của hai sinhviên:

object[] a = sv1[i]; sv1[i] = sv1[j];sv1[j] = a.Bước 19: Khởi tạo phương thức static void XepHang(object[][] sv2).Bước 20: Gắn biến sv2[0][4] = 1

Bước 21: Chuyển sang dạng int: int xephang = (int)sv2[0][4]; sang Bước 22Bước 22: Khởi tạo vòng lặp for (int i = 1; i < sv2.Length; i++); sang Bước 23Bước 23: Khởi tạo nhánh if ((double)sv2[i][2] == (double)sv2[i - 1][2]) lồng trong vònglặp for ở phía trên; sang Bước 24

Bước 24: Nếu điểm sinh viên 2 bằng điểm sinh viên 1 thì sv2[i][4] = xephang; sang Bước25

Bước 25: Nếu điểm sinh viên 2 không bằng điểm sinh viên 1 thìxephang++;

sv2[i][4] = xephang; sang Bước 26Bước 26: Khởi tạo phương thức static void XuatTT1SV(object[] sv3) để in thông tin theomẫu (sv3[0] là tên sinh viên; sv3[1] là năm sinh; sv3[2] là điểm trung bình; sv3[3] là xếploại; sv3[4] là thứ hạng); sang Bước 27

Bước 27: Khởi tạo phương thức static void NhapDSSV(object[][] ds); sang Bước 28Bước 28: Khởi tạo vòng lặp for (int i = 0; i < ds.Length; i++) để gọi phương thứcNhapTT1SV(ds[i], i); sang Bước 29

Bước 29: Khởi tạo phương thức static void XuatDSSV(object[][] ds1) để gọi phươngthức XuatTT1SV(ds[i]); sang Bước 30

Bước 30: Quay lại phương thức static void Main(string[] args) để khởi tạo biến n là sốlượng sinh viên; sang Bước 31

Bước 31: Khởi tạo biến object[][] a = new object[n][]; sang Bước 32

Trang 12

Bước 32: Khởi tạo vòng lặp for (int i = 0; i < a.Length; i++) để gán a[i] = new object[5];sang Bước 33

Bước 33: Gọi phương thức NhapDSSV(a); sang Bước 34Bước 34: Gọi phương thức SapXep(a); sang Bước 35Bước 35: Gọi phương thức XepHang(a); sang Bước 36Bước 36: Gọi phương thức XuatDSSV(a); Kết thúc

b) Mã Nguồn

static void Bai6() {

Console.InputEncoding = Encoding.UTF8; Console.OutputEncoding = Encoding.UTF8; Console.Clear();

Console.WriteLine( "Nhập số lượng sinh viên: " ); int sl = int Parse(Console.ReadLine()); object [][] ds = new object [sl][]; for int ( i = 0; i < ds.Length; i++) {

ds[i] = new object [5]; }

NhapDanhSachSV(ds); SapXep(ds); XepHang(ds); XuatDanhSachSV(ds); Console.WriteLine( "\n -\n" ); Console.ReadLine(); }

static void NhapTT1SinhVien( object [] sv, int i) {

Console.InputEncoding = Encoding.UTF8; Console.OutputEncoding = Encoding.UTF8; Console.Write( "Sinh viên {0}\n" , i + 1); Console.Write( "Nhập tên sinh viên: " ); sv[0] = Console.ReadLine(); Console.Write( "Nhập năm sinh của sinh viên: " ); sv[1] = int Parse(Console.ReadLine()); Laplai:

Console.Write( "Nhập điểm trung bình của sinh viên: " ); sv[2] = double Parse(Console.ReadLine());

double x = ( double )sv[2]; (x >= 0 && x <= 4.0) if {

(x >= 0 && x < 1.0) if {

sv[3] = "Kém" ; }

else if (x >= 1.0 && x < 2.0) {

sv[3] = "Yếu" ; }

else if (x >= 2.0 && x < 2.5) {

sv[3] = "Trung bình" ; }

else if (x >= 2.5 && x < 3.2)

Trang 13

{ sv[3] = "Khá" ; }

else if (x >= 3.2 && x < 3.6) {

sv[3] = "Giỏi" ; }

else if (x >= 3.6 && x <= 4.0) {

sv[3] = "Xuất sắc" ; }

Console.WriteLine(); }

else { Console.WriteLine( "Vui lòng nhập lại!!!" ); goto Laplai;

} } static void SapXep( object [][] sv2) {

for int ( i = 0; i < sv2.Length - 1; i++) {

for int ( j = i + 1; j < sv2.Length; j++) {

(( if double )sv2[i][2] < ( double )sv2[j][2]) {

object [] a = sv2[i]; sv2[i] = sv2[j]; sv2[j] = a; } } } } static void XepHang( object [][] sv3) {

sv3[0][4] = 1; int xh = ( int )sv3[0][4]; for int ( i = 1; i < sv3.Length; i++) {

(( if double )sv3[i][2] == ( double )sv3[i - 1][2]) {

sv3[i][4] = xh; }

else { xh++; sv3[i][4] = xh; }

} } static void XuatTT1SinhVien( object [] sv1) {

Console.InputEncoding = Encoding.UTF8; Console.OutputEncoding = Encoding.UTF8; Console.WriteLine( "\n -\n" ); Console.WriteLine( "BẢNG ĐIỂM TỐT NGHIỆP\n" ); Console.WriteLine( "Cấp cho sinh viên {0}, năm sinh {1}\n" , sv1[0], sv1[1]); Console.WriteLine( "Trong kì thi tốt nghiệp 2021, sinh viên trên đã đạt điểm trung bình là {0}, và được xếp loại {1} Sinh viên có thứ hạng {2} trong lớp.\n" , sv1[2], sv1[3], sv1[4]); Console.WriteLine( "Hiệu trưởng trường Đại học ABC\n" );

Trang 14

Console.WriteLine( "Kí tên, Đóng dấu\n" ); Console.WriteLine( "\n -\n" ); }

static void NhapDanhSachSV( object [][] sv4) {

for int ( i = 0; i < sv4.Length; i++) {

NhapTT1SinhVien(sv4[i], i); }

} static void XuatDanhSachSV( object [][] sv5) {

for int ( i = 0; i < sv5.Length; i++) {

XuatTT1SinhVien(sv5[i]); }

}

Trang 15

ỨNG DỤNGMenu:

Bài 1:

Trang 16

Bài 2:

Bài 3:

Trang 17

Bài 5:

Bài 6:

Trang 19

PHỤ LỤCMã nguồn toàn bộ chương trình

using System; using System.Collections.Generic; using System.Linq;

using System.Text; using System.Threading; using System.Threading.Tasks; namespace Đồ_Án_Cơ_Sở_Lập_Trình {

internal class Program

{ static void Bai1() {

Console.InputEncoding = Encoding.UTF8; Console.OutputEncoding = Encoding.UTF8; Console.Clear();

Console.WriteLine( "Nhập dữ liệu cạnh a:" ); double a = double Parse(Console.ReadLine()); Console.WriteLine( "Nhập dữ liệu cạnh b:" ); double b = double Parse(Console.ReadLine());

Console.WriteLine( "Nhập dữ liệu góc C:" ); double C = double Parse(Console.ReadLine()); double c, B, A;

c = Math.Sqrt((a * a) + (b * b) - 2 * a * b * Math.Cos(C * Math.PI / 180)); A = (a * Math.Sin(C * Math.PI / 180) / c) * 180 / Math.PI;

B = 180 - A - C; Console.WriteLine( "Đáp án cạnh c là: {0}" , c); Console.WriteLine( "Đáp án góc A là: {0}" , A); Console.WriteLine( "Đáp án góc B là: {0}" , B); Console.ReadLine();

} static void Bai2() {

Console.InputEncoding = Encoding.UTF8; Console.OutputEncoding = Encoding.UTF8; Console.Clear();

Console.WriteLine( "Tính P" ); Console.Write( "Nhập số thứ tự của bạn: " ); int n = int Parse(Console.ReadLine()); double P = 0;

for int ( i = n; i >= 1; i ) {

P = Math.Pow(i + P, ( double )1 / (n + 1)); }

double kq = 1.0 / P; Console.WriteLine( "Tổng của P là: {0}" , kq); Console.ReadLine();

}

Ngày đăng: 25/09/2024, 16:35

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
3. Using Console.SetCursorPosition asynchronously (https://stackoverflow.com/questions/55519275/using-console-setcursorposition-asynchronously) ngày 29/11/2023 Link
4. Toán học Việt Nam, định lý Cosin, định lý Sin, các công thức tính diện tích tam giác (https://www.mathvn.com/2014/02/inh-li-cosin-inh-ly-sin-cac-cong-thuc.html) ngày 22/11/2023 Link
5. Công ty TNHH Sinta, Tổng hợp các hàm xử lý chuỗi trong lập trình C# (https://sinta.vn/chi-tiet/tong-hop-cac-ham-xu-ly-chuoi-trong-lap-trinh-c-sharp/ Link
1. TS.GV Đặng Ngọc Hoàng Thành, Tài liệu các buổi học môn Cơ sở lập trình [pptx] Khác
2. Phạm Công Ngô 2007, Lập trình C# từ cơ bản đến nâng cao, Nhà xuất bản Giáo Dục Khác

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

TÀI LIỆU LIÊN QUAN

w