+ 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!
- Kết Quả Chạy Chương Trình Khi Kích Vào Nút Bổ Sung
- Kết Quả Thiết Kế Form Bài Tập Mẫu Về Mảng Hai Chiều
- Kết Quả Chạy Chương Trình Bài Tập Mẫu Về Mảng Hai Chiều
- Kết Quả Chạy Chương Trình Kiểm Tra Xâu Đối Xứng
- Kết Quả Chạy Chương Trình Chuẩn Hóa Và Đếm Từ Trong Xâu
- Kết Quả Chạy Chương Trình Định Giá Biểu Thức Hậu Tố
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 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 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
- 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)
{