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

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

39 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

Nội dung

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ổ

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 30 tháng 10 năm 2022

Trang 3

tự là 1, 11, 21, v.v., thì n=1, như yêu cầu đầu tiên

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ổng

số số âm, số lượng số dương, tổng số số dương trong mảng

Bài 4: Nhập các phần tử của một ma trận A , in ra ma trận phản chiếu mxn

Bài 5: Đọc vào một chuỗi, cho biết chuỗi đó có bao nhiêu từ

Ví dụ: S = “ minh thich thi minh nhich thoi” => có 6 từ

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

Trang 4

-LỜI GIẢI

BÀI 1.

1 Phân Tích

Xác định bài toán: - Input: Nhập các số a, b, c

- Output: Nghiêm của phương trình trùng phương ax + bx + c = 0 (1)42

Ý 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

- 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

- 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 5: d = -c / b;

- 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 9: Tính delta = b * b - 4 * a * c;

- Bước 10: Nếu delta < 0 thì sang bước 25;- Bước 11: no1 = no2 = 0;

- 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 13: no1 = -b / (2 * a);

- 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 onyour phone? Save to

read later on yourcomputer

Save to a Studylist

Trang 5

- Bước 17: no1 = , no2 = ;

- Bước 18: Nếu no1 > 0 và no2 > 0 thì thông báo “Phương trình có 4 nghiệm x1 = ,

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

Trang 6

b) Sơ Đồ Khối

Trang 7

c) Mã Nguồn

// BÀI 1

static void Bai1( check) int

{ double a; double b; double c; (check == ) if 1

{ a = ; 1

// Nh pậ a for (; ; ) {

{

Console.Write("Nh pậ a = "); a = double.Parse(Console.ReadLine()); break;

} catch {

Console.WriteLine("Vui lòng nh pậ s "ố); }

}

// Nh pậ b for (; ; ) {

{

Console.Write("Nh pậ b = "); b = double.Parse(Console.ReadLine()); break;

} catch {

Console.WriteLine("Vui lòng nh pậ s "ố); }

}

// Nh pậ c for (; ; ) { try {

Console.Write("Nh pậ c = "); c = double.Parse(Console.ReadLine()); break;

} catch {

Console.WriteLine("Vui lòng nh pậ s "ố); }

} }

Trang 8

no1 = Math.Sqrt(d);

double no2 = -Math.Sqrt(d);

Console.WriteLine($"Ph ngươ trình có 2 nghi mệ \nx1 = {no1}, x2 = {no2}");

} } else {

// Tính delta

double delta = b * b - * a * c; 4

// Xác đ nhị các nghi mệ phươ trình ng double no1 = ; 0

double no2 = ; 0

// delta âm (delta < ) if 0

{

Console.WriteLine("Ph ngươ trình vô nghi m"ệ ); }

// delta b ngằ 0 else if (delta == ) 0

{

no1 = -b / ( * a); 2

// pt b cậ 2 có nghi mệ kép âm (no1 < ) if 0

{

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}, x2 = {no2}");

Trang 9

} // delta dươ ng else {

no1 = (-b - Math.Sqrt(delta)) / ( * a); 2

no2 = (-b + Math.Sqrt(delta)) / ( * a); 2

// pt b cậ 2 có 2 nghi mệ dươ ng (no1 > && no2 > ) if 0 0

{

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}, x2 = {no2}, x3 = {no3}, x4 = {no4}");

double no4 = Math.Sqrt(no2);

Console.WriteLine($"Ph ngươ trình có 3 nghi mệ phân bi tệ \nx1 = {no3}, x2 = {no4}, x3 = 0");

double no4 = Math.Sqrt(no1);

Console.WriteLine($"Ph ngươ trình có 3 nghi mệ phân bi tệ \nx1 = {no3}, x2 = {no4}, x3 = 0");

}

// pt b cậ 2 có 2 nghi mệ trái d uấ else if (no1 > && no2 < ) 0 0

double no4 = Math.Sqrt(no2);

Console.WriteLine($"Ph ngươ trình có 2 nghi mệ phân bi tệ \nx1 = {no3}, x2 = {no4}");

{

Console.WriteLine("Ph ngươ trình vô nghi m"ệ ); }

} }

Trang 10

}

BÀI 2.

1 Phân Tích

Xác định bài toán: - Input: Nhập n- Output: Tính Ý tưởng:

- 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ụngchí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àolà 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+12 Thuật Toán

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

- Bước 1: Nhập 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ề ;

Nếu i > n + 1 trả về 0;

- Bước 3: mau = dequy(n, 1);

- Bước 4: Thông báo kết quả “P = 1 / mau”; Kết thúc;

static void Bai2( check) int

{ n; int

(check == ) if 1

{

Trang 11

Console.WriteLine($"n = 4"); }

else {

// Nh pậ n do

{ (; ; )

{

{

Console.Write("Nh pậ n = "); n = Parse(Console.ReadLine()); int

break; } catch {

Console.WriteLine("Vui lòng nh pậ s "ố); }

} } while (n < ); 0

}

double result = / sqrtRecur(n, ); 1 1

// Hi nể th k tị ế quả

Console.Write($"K tế qu hi nả ể th v iị ớ n = {n}, P = "); Console.WriteLine(result);

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;

Trang 12

- Bước 4: Nếu arr[i] < 0 thì countA = countA + 1 và sumA = sumA + arr[i] sau đó

(check == ) if 1

{

arr = new int[6]; Random rd = new Random(); for int ( i = ; i < ; i++) 0 6

{

arr[i] = rd.Next(- , ); 9 10

}

Console.Write("M ngả : ["); foreach ( val in arr) int

{

Console.Write($" {val},"); }

Console.WriteLine(" ]"); }

else {

// Nh pậ n n; int

do

{ for (; ; ) { try {

Console.Write("Nh pậ vào s lố ượ ph nngầ t c aử ủ m ng:ả "); n = Parse(Console.ReadLine()); int

break; } catch {

Console.WriteLine("Vui lòng nh pậ số nguyên"); }

} } while (n <= ); 0

// M ngả arr = new int [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}: "ứ );

Trang 13

break; } catch {

Console.WriteLine("Vui lòng nh pậ số nguyên"); }

} } }

// Ki mể tra ph nầ tử m ngả sumA = ; int 0

{ countA += ; 1

sumA += arr[i]; }

elseif (arr[i] > ) 0

{ countD += ; 1

sumD += arr[i]; }

}

- Output: Ma trận phản chiếu B của Anxmmxn

Trang 14

row; int

column; int

(check == ) if 1

{ row = ; 2

column = ; 3

matrix = newint[2 3, ]; Random rd = new Random();

for int ( i = ; i < row; i++) 0

Console.WriteLine("M ngả :"); for int ( i = ; i < row; i++) 0

Console.WriteLine(); }

} else {

// Khai báo và nh pậ m ngả // column

do

{ for (; ; ) { try {

Console.Write("Nh pậ vào s c tố ộ c aủ ma tr n:ậ "); column = Parse(Console.ReadLine()); int

break; } catch {

Console.WriteLine("Vui lòng nh pậ số nguyên"); }

}

} while (column <= ); 0

Trang 15

// row do

{ (; ; )

{

{

Console.Write("Nh pậ vào s hàng c aố ủ ma tr n:ậ "); row = Parse(Console.ReadLine()); int

break; } catch {

Console.WriteLine("Vui lòng nh pậ số nguyên"); }

{

for int ( j = ; j < column; j++) 0

{ (; ; )

{ try {

Console.Write("A[{0}, {1}] = ", i, j); matrix[i, j] = Parse(Console.ReadLine()); int

break; } catch {

Console.WriteLine("Vui lòng nh pậ số nguyên"); }

} } }

Console.WriteLine("M ngả :"); for int ( i = ; i < row; i++) 0

Console.WriteLine(); }

}

// Hi nể th k tị ế quả

Trang 16

Console.WriteLine(); }

}

BÀI 5.

1 Phân Tích

Xác định bài toán: - Input: Chuỗi văn bản- Output: Số từ có trong chuỗiÝ tưởng:

- Các từ trong văn bản được ngăn cách nhau bởi khoảng trắng / dấu cách => táchchuỗi thàng một mảng với các phần tử của mảng là các từ của chuỗi được phânchia bởi khoảng trắng / dấu cách (“ “)

- Đếm các phần tử trong mảng, ngoại trừ các ký tự đặc biệt ( , | | - | ~ | ? | …)2 Thuật Toán

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

- Bước 1: Nhập chuỗi str;

- Bước 2: Mảng arrStr có các phần tử được cung cấp bởi chuỗi str sau khi sử dụng

phương thức tách chuỗi bằng “khoảng trắng / dấu cách” ( trong C# ta sử dụngphương thức Split(‘ ’) );

- Bước 3: count = i = 0;

- Bước 4: Nếu 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 6: count = count + 1;- Bước 7: i = i + 1, quay lại bước 4;

- 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

{ string str; (check == ) if 1

{

Trang 17

} else {

// Nh pậ n

Console.Write("Nh pậ chu iỗ mu nố ki mể tra: "); str = Console.ReadLine();

}

string[] arrStr = str.Split( ); ' '

case : ";"

case : "'"

case"\"": case"-": case")": case"(": case"?": case"!": case"&": case : ","continue; default: count += ; 1break; }

}

- 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 sinhviên.

Trang 18

- 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 Dtb <= 1 : Rớt

 Dtb <= 3 : Yếu Dtb <= 5 : Trung bình Dtb <= 6.5 : Khá Dtb <= 8 : Giỏi Dtb <= 10 : Xuất sắc

 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ánh2 phần tử kề nhau, nếu phần tử đứng sau lớn hơn phần tử đứngtrước ta hoán đổi giá trị của 2 phần tử này cho nhau Lặp đi lặplại công việc cho từng phần tử trong mảng cho đến phần tử cuốicùng.

 Tạo mảng mới (1) bằng cách loại bỏ các phần tử trùng nhau trongmảng vừa sắp xếp (2): duyệt qua các phần tử của mảng (2) gángiá 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ácsinh 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ập2 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

Trang 19

- 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 12: tmp = score[j]; - Bước 13: score[j] = score[i];- Bước 14: score[i] = tmp;

- Bước 15: j = j + 1, quay lại bước 10;- Bước 16: i = i + 1, quay lại bước 8;- Bước 17: i = 0;

- 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 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 34: Nếu tmp <= 1 thì sinh viên thứ i + 1 xếp loại “Rớt” và chuyển đến bước

40, không thì tiếp tục bước 35;

- Bước 35: Nếu tmp <= 3 thì sinh viên thứ i + 1 xếp loại “Yếu” và chuyển đến bước

40, không thì tiếp tục bước 36;

- Bước 36: Nếu tmp <= 5 thì sinh viên thứ i + 1 xếp loại “Trung bình” và chuyển

đến bước 40, không thì tiếp tục bước 37;

- Bước 37: Nếu tmp <= 6.5 thì sinh thứ i + 1 viên xếp loại “Khá” và chuyển đến

bước 40, không thì tiếp tục bước 38;

- Bước 38: Nếu tmp <= 8 thì sinh viên thứ i + 1 xếp loại “Giỏi” và chuyển đến bước

40, không thì tiếp tục bước 39;

- Bước 39: Sinh viên thứ i + 1 xếp loại “Xuất sắc”;- Bước 40: j = 0;

- Bước 41: Nếu tmp = deScore[j] thì sinh viên thứ i + 1 có thứ hạng “j+1” và

chuyển đến bước 43, không thì tiếp tục bước 42;

Trang 20

- Bước 42: j = j + 1, quay lại bước 41;- Bước 43: i = i + 1, quay lại bước 32;- Bước 44: Thông báo kết quả; Kết thúc;

b) Mã Nguồn

// BÀI 6

// Hàm nh pậ thông tin m tộ sinh viên

static void NhapTT1SV(object[] sv) {

Console.WriteLine("\nNh pậ thông tin sinh viên "); Console.Write("Nh pậ họ tên: ");

sv[ ] = Console.ReadLine(); 0

// Nh pậ năm sinh do

{ for (; ; ) { try {

Console.Write("Nh pậ năm sinh: "); sv[ ] = Parse(Console.ReadLine()); 1 int

break; } catch {

Console.WriteLine("Vui lòng nh pậ s nguyên"ố ); }

}

} while int (( )sv[1] < ); 0

// Nh pậ đi mể trung bình do

{ for (; ; ) { try {

Console.Write("Nh pậ ĐTB: "); sv[ ] = 2 float.Parse(Console.ReadLine()); break;

} catch {

Console.WriteLine("Vui lòng nh pậ s "ố); }

}

} while float (( )sv[2] < || (0 float)sv[2] > ); 10

// X pế lo iạ

sv[ ] = ; 3 ""

// Th h ngứ ạ sv[ ] = ; 4 0

}

// Hàm xác đ nhị x pế lo iạ và thứ h ngạ sinh viên

static void XLTH(object[][] ds) {

[] score = [ds.Length];

float newfloat

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

{

score[i] = (float)ds[i][2]; }

Ngày đăng: 16/06/2024, 15:18

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

TÀI LIỆU LIÊN QUAN

w