Thực hành kỹ thuật lập trình - 13



+ Thực hiện tính tổng hai ma trận, hiển thị ma trận tổng ra richtexbox tương ứng với nhãn ma trận tổng .

- Khi người dùng kích vào nút “Thoát” thì thực hiện kết thúc chương trình.

Hướng dẫn thực hành:

1. Thiết kế Form như yêu cầu đề bài

2. Phân tích yêu cầu

3. Hướng dẫn thực hiện

Bước 1. Thiết kế Form theo mẫu và gắn các điều khiển Bước 2. Viết mã lệnh cho các sự kiện

- Viết mã lệnh khai báo 3 ma trận và cấp của ma trận

Có thể bạn quan tâm!

Xem toàn bộ 312 trang tài liệu này.

int n, m;

int[,] A; int [,]B; int [,] C;

- Viết mã lệnh cho sự kiện Load Form

private void Form1_Load(object sender, EventArgs e)

{

rtbox_A.Enabled = false; rtbox_B.Enabled = false; rtbox_tong.Enabled = false; txt_m.Enabled = false; bt_nhapA.Enabled = false; bt_nhapB.Enabled = false; bt_Tong.Enabled = false;

}

- Viết mã lệnh cho sự kiện KeyUp của textbox tương ứng với nhãn nhập số hàng

private void txt_n_KeyUp(object sender, KeyEventArgs e)

{

txt_m.Enabled = true;

}

- Viết mã lệnh cho sự kiện KeyUp của textbox tương ứng với nhãn nhập số cột

private void txt_m_KeyUp(object sender, KeyEventArgs e)

{

bt_nhapA.Enabled = true; txt_n.Enabled = false;

}

- Viết mã lệnh cho hàm kiểm tra chuỗi rỗng

bool kiemtra(string s)

{

if (string.IsNullOrWhiteSpace(s)) return true; else return false;

}

- Viết mã lệnh cho hàm kiểm tra dữ liệu nhập vào

bool kiemtra_dulieu(string S, out int n)

{



bool kt;

kt = int.TryParse(S, out n); return kt && n > 0;

}

- Viết mã lệnh cho sự kiện kích chuột vào nút nhập ma trận A

private void bt_matranA_Click(object sender, EventArgs e)

{

bool kt; rtbox_A.Text = ""; txt_m.Enabled = false;

if (kiemtra_dulieu(txt_n.Text, out n) && kiemtra_dulieu(txt_m.Text, out m)&&!kiemtra(txt_m.Text)&&!kiemtra(txt_n.Text))

{

A = new int[n, m];

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

{

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

{

kt = int.TryParse(Microsoft.VisualBasic.Interaction.InputBox("Nhap A[" + (i + 1).ToString() + "," + (j + 1).ToString() + "]=", "Nhập phần tử của ma trận"), out A[i, j]);

rtbox_A.Text += A[i, j].ToString() + " ";


}

rtbox_A.Text += "n";

}

bt_nhapB.Enabled = true;

}

else { MessageBox.Show("Nhập sai n hoặc m", "Thông báo"); txt_n.Enabled = true; txt_m.Enabled = true; }

}

- Viết mã lệnh cho sự kiện kích chuột vào nút nhập ma trận B

private void bt_matranB_Click(object sender, EventArgs e)

{

bool kt; rtbox_B.Text = ""; bt_nhapA.Enabled = false;

if (kiemtra_dulieu(txt_n.Text, out n) && kiemtra_dulieu(txt_m.Text, out m)&&!kiemtra(txt_m.Text)&&!kiemtra(txt_n.Text))

{

B = new int[n, m];

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

{

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

{

kt = int.TryParse(Microsoft.VisualBasic.Interaction.InputBox("Nhap B[" + (i + 1).ToString() + "," + (j + 1).ToString() + "]=", "Nhập phần tử của ma trận"), out B[i, j]);



rtbox_B.Text += B[i, j].ToString() + " ";


}

rtbox_B.Text += "n";

}

bt_Tong.Enabled = true;

}

else MessageBox.Show("Nhập sai n hoặc m", "Thông báo");

}

- Viết mã lệnh cho sự kiện kích chuột vào nút tính tổng hai ma trận

private void bt_Tong_Click(object sender, EventArgs e)

{

C = new int[n, m]; bt_nhapB.Enabled = false; for (int i = 0; i < n; i++)

for (int j = 0; j < m; j++) C[i, j] = A[i, j] + B[i, j];

// Hien thi rtbox_tong.Text = ""; for (int i = 0; i < n; i++)

{

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

rtbox_tong.Text += C[i, j].ToString() + " "; rtbox_tong.Text += "n";

}

}

Kết quả chạy chương trình

Hình 1 71 Kết quả chạy chương trình Bài 3 Viết một chương trình thực hiện 1

Hình 1. 71. Kết quả chạy chương trình

Bài 3

Viết một chương trình thực hiện các công việc sau:

1. Thiết kế Form như hình sau:



Hình 1 72 Form nhập ma trận vuông Yêu cầu Nhãn ma trận vuông Font Time New 2

Hình 1. 72. Form nhập ma trận vuông

Yêu cầu:

- Nhãn ma trận vuông: Font Time New Roman, chữ hoa, in đậm, cỡ chữ 16, căn giữa Form.

- Nhãn nhập cấp của ma trận: Font Time New Roman, cỡ chữ 14.

- Đối tượng ô tương ứng với nhãn nhập cấp của ma trận là Textbox.

- Điều khiển để hiển thị ma trận vừa nhập và kết quả là các RichTextBox

- Đối tượng “Ma trận vừa nhập”, “Kết quả” là các GroupBox.

- Các điều khiển “Nhập ma trận”, “Thoát”,”Tính tổng các phần tử trên đường chéo chính”, “Tìm số dương nhỏ nhất”, “Tính trung bình cộng các số chẵn trên cột k”, “Sắp xếp từng hàng của ma trận tăng dần” là các Button.

2. Lập trình cho các nút sự kiện:

- Khi Load Form:

+ TextBox tương ứng với nhãn nhập cấp của ma trận sáng lên cho phép người dùng giá trị (kiểm tra sự hợp lệ của dữ liệu nhập vào).

+ Các điều khiển khác vô hiệu hóa (nút “Thoát” luôn sáng).

- Nút Nhập ma trận sáng lên khi người dùng nhập giá trị ở Textbox nhập n.

- Khi người dùng kích vào nút “Nhập ma trận” thì:

+ TextBox nhập n vô hiệu hóa.

+ Hiện lên cửa sổ có môi trường nhập để người dùng nhập ma trận vuông số nguyên cấp n, hiển thị ma trận ra richTextBox tương ứng với nhãn ma trận vừa nhập.

+ Sau khi nhập xong ma trận A thì nút “Nhập ma trận” bị vô hiệu hóa và các nút còn lại sáng lên.

- Khi người dùng kích vào nút “Tính tổng các phần tử trên đường chéo chính”

thì:

+ Thực hiện tính tổng các phần tử trên đường chéo chính của ma trận.



+ Hiển thị giá trị tổng các phần tử trên đường chéo chính của ma trận ra richtextbox tương ứng với nhãn kết quả.

- Khi người dùng kích vào nút “Tìm số dương nhỏ nhất” thì:

+ Thực hiện tìm số dương nhỏ nhất của ma trận.

+ Hiển thị số dương nhỏ nhất ra richtextbox tương ứng với nhãn kết quả.

- Khi người dùng kích vào nút “Tính trung bình cộng số chẵn trên cột k” thì:

+ Hiện lên cửa sổ có môi trường nhập để người dùng nhập vào số nguyên dương k (kiểm tra dữ liệu nhập vào).

+ Thực hiện tính trung bình cộng các phần tử có giá trị chẵn trên cột thứ k của ma trận.

+ Hiển thị giá trung bình cộng đó ra richtextbox tương ứng với nhãn kết quả.

- Khi người dùng kích vào nút “Sắp xếp từng hàng của ma trận tăng dần” thì:

+ Thực hiện sắp xếp từng hàng của ma trận theo thứ tự tăng dần.

+ Hiển thị ma trận vừa sắp xếp ra richTextBox tương ứng với nhãn kết quả

- Khi người dùng kích vào nút “Thoát” thì thực hiện kết thúc chương trình.

Hướng dẫn thực hành:

1. Thiết kế Form như yêu cầu đề bài

2. Phân tích yêu cầu

3. Hướng dẫn thực hiện

Bước 1. Thiết kế Form theo mẫu và gắn các điều khiển tương ứng Kết quả thiết kế Form

Hình 1 73 Form Ma trận vuông Bước 2 Viết mã lệnh thực hiện các công việc 3

Hình 1. 73. Form Ma trận vuông

Bước 2. Viết mã lệnh thực hiện các công việc

- Viết mã lệnh khai báo ma trận

int n; int[,] A;


- Viết mã lệnh cho sự kiện Load Form

private void Form1_Load(object sender, EventArgs e)

{

vohieuhoa(false); txt_n.ResetText(); txt_n.Focus();

}

- Viết mã lệnh cho hàm vô hiệu hóa các nút

void vohieuhoa(bool gt)

{

bt_Nhap.Enabled = gt; bt_TongCC.Enabled = gt; bt_Sapxep.Enabled = gt; bt_DuongMin.Enabled = gt; bt_TBC_cotk.Enabled = gt;

}

- Viết mã lệnh cho hàm kiểm tra xâu rỗng

bool kiemtra(string s)

{

if (string.IsNullOrWhiteSpace(s)) return true; else return false;

}

- Viết mã lệnh cho hàm kiểm tra dữ liệu nhập vào

bool kiemtra_dulieu()

{

bool kt;

if (kiemtra(txt_n.Text)) return false; kt = int.TryParse(txt_n.Text, out n); return kt && n > 0;

}

- Viết mã lệnh cho sự kiện kích chuột vào nút nhập ma trận

private void bt_Nhap_Click(object sender, EventArgs e)

{

bool kt; rtbox_Hienthi.Text = ""; if (kiemtra_dulieu())

{

A = new int[n, n]; vohieuhoa(true); txt_n.Enabled = false; for (int i = 0; i < n; i++)

{

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

{

kt = int.TryParse(Microsoft.VisualBasic.Interaction.InputBox("Nhap A[" + (i +



1).ToString() + "," + (j + 1).ToString() + "]=", "Nhập phần tử của ma trận"), out A[i, j]);

rtbox_Hienthi.Text += A[i, j].ToString() + " ";


}

rtbox_Hienthi.Text += "n";

}

bt_Nhap.Enabled = false;

}

else { MessageBox.Show("Nhập sai n", "Thông báo"); txt_n.Focus(); }


}

- Viết mã lệnh cho sự kiện kích chuột vào nút tính tổng các phần tử trên đường

chéo chính

private void bt_TongCC_Click(object sender, EventArgs e)

{

int S = 0; rtbox_ketqua.ResetText(); for (int i = 0; i < n; i++)

S+= A[i, i];

rtbox_ketqua.Text = "Tổng các phần tử trên đường chéo chính là"+ S.ToString();

}

- Viết mã lệnh cho sự kiện kích chuột vào nút tìm số dương nhỏ nhất

private void bt_DuongMin_Click(object sender, EventArgs e)

{

bool kt = false; rtbox_ketqua.ResetText(); int i = 0, j, min=0;

while (i<n)

{

j=0;

while (j < n && A[i, j] <= 0) j++; if (j < n)

{

min = A[i, j]; kt = true; break;

}

else i++;

}

if (kt)

{

for (i = 0; i < n; i++) for (j = 0; j < n; j++)

if (A[i, j] > 0 && A[i, j] < min) min = A[i, j];




rtbox_ketqua.Text = "Số dương nhỏ nhất là: "+ min.ToString();

}

else rtbox_ketqua.Text = "Không có số dương nhỏ nhất";

}

- Viết mã lệnh cho sự kiện kích chuột vào nút sắp xếp từng hàng của ma trận

tăng dần

private void bt_SX_Click(object sender, EventArgs e)

{

int tg; rtbox_ketqua.ResetText(); for(int i =0;i<n;i++)

for(int j=0;j<n-1;j++)

for (int k = j+1; k < n; k++) if (A[i, j] > A[i, k])

{

tg=A[i,j];

A[i, j] = A[i, k];

A[i, k] = tg;

}

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

{

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

rtbox_ketqua.Text += A[i, j].ToString() + " "; rtbox_ketqua.Text += "n";

}

}

- Viết mã lệnh cho sự kiện kích chuột vào tính trung bình cộng số chẵn trên cột k

private void bt_TBC_cotk_Click(object sender, EventArgs e)

{

bool kt; int k, S = 0, d = 0; rtbox_ketqua.ResetText();


do

{

kt = int.TryParse(Microsoft.VisualBasic.Interaction.InputBox("Nhập cột k=", "Tính TBC chẵn trên cột thứ k"), out k);

} while (!kt || k <= 0 || k > n); for (int i = 0; i < n; i++)

if (A[i, k-1] % 2 == 0)

{

..... Xem trang tiếp theo?
⇦ Trang trước - Trang tiếp theo ⇨

Ngày đăng: 16/07/2022