Kết Quả Chạy Chương Trình Các Thao Tác Trên Mảng Một Chiều



private void bt_Thoat_Click(object sender, EventArgs e)

{

this.Close();

}

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

Hình 1 52 Kết quả chạy chương trình các thao tác trên mảng một chiều 1 2 3 1

Hình 1. 52. Kết quả chạy chương trình các thao tác trên mảng một chiều

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

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

1.2.3. Bài tập thực hành

Bài 1

Viết một chương trình thực hiện các yêu cầu sau:

1. Thiết kế Form theo mẫu

Hình 1 53 Bài tập mảng một chiều Yêu cầu Nhãn một số thao tác trên mảng 2

Hình 1. 53. Bài tập mảng một chiều

Yêu cầu:

- Nhãn một số thao tác trên mảng một chiều: Font Time New Roman, chữ hoa, in đậm, cỡ chữ 14, căn giữa Form.

- Nhãn nhập kích thước mảng, dãy vừa nhập là, kết quả, điều kiện 1, điều kiện 2: Font Time New Roman, chữ thường, cỡ chữ 11

- Đối tượng ô để nhập kích thước mảng, nhập giá trị, điều kiện 1, điều kiện 2, hiển thị dãy vừa nhập, hiển thị kết quả là các Textbox Font Time New Roman, chữ thường, cỡ chữ 14.


- Các điều khiển “Thanh lọc”, “Bổ sung”, “Loại bỏ”, “Tìm kiếm”, “Thoát” là các button.

- Đối tượng điều kiện là một GroupBox.

2. Lập trình cho các nút chức năng:

- Khi Load Form:

+ Các textbox để nhập giá trị, hiển thị dãy, kết quả vô hiệu hóa

+Group điều kiện ẩn

+ Các nút “Thanh lọc”, “Bổ sung”, “Loại bỏ”, “Tìm kiếm” vô hiệu hóa.

+ Textbox để nhập kích thước mảng để trống, con trỏ đặt tại ô đó.

- Khi người dùng nhập một giá trị vào textbox tương ứng với nhãn nhập kích thước mảng rồi nhấn phím Enter thì thực hiện kiểm tra xem dữ liệu nhập vào có hợp lệ không? (giá trị nhập vào là số nguyên dương). Nếu dữ liệu nhập vào không đúng thì hiện lên hộp thoại thông báo và cho phép nhập lại. Ngược lại thì textbox tương ứng với nhãn nhập giá trị sáng lên cho phép hoạt động và con trỏ đặt tại ô đó.

- Khi người dùng nhập giá trị vào textbox tương ứng với nhãn nhập giá trị rồi nhấn phím Enter thì hiển thị giá trị đó ra textbox tương ứng với nhãn dãy vừa nhập, sau đó textbox này rỗng và con trỏ lại đặt tại ô đó để người dùng nhập giá trị tiếp theo. Lặp lại quá trình này cho tới khi nhập xong giá trị cho các phần tử của mảng. Sau khi đã nhập xong dãy thì các nút “Thanh lọc”, “Bổ sung”, “Loại bỏ”, “Tìm kiểm” sáng lên cho phép hoạt động, các textbox tương ứng với nhãn nhập kích thước mảng, nhập giá trị vô hiệu hóa.

- Khi người dùng kích vào nút “Thanh lọc”: thực hiện loại khỏi dãy những phần tử giống nhau (chỉ giữ lại một) và hiển thị dãy sau khi thanh lọc lên textbox tương ứng với dãy kết quả.

- Khi người dùng kích vào nút “Bổ sung” thì:

+ Groupbox điều kiện sáng lên

+ Label điều kiện 2 và textbox tương ứng với nhãn này ẩn

+ Thuộc tính Text của Label điều kiện 1 là “Nhập vị trí cần bổ sung”

+ Textbox tương ứng với nhãn điều kiện 1 để trống và con trỏ đặt tại đó

- Khi người dùng nhập một giá trị vào textbox tương ứng với nhãn điều kiện một thì thực hiện kiểm tra xem dữ liệu có hợp lệ không? (giá trị nhập vào phải là số nguyên dương). Nếu không hợp lệ thì hiện lên hộp thoại thông báo và yêu cầu nhập lại, ngược lại thì Label điều kiện 2 hiện lên, thuộc tính Text của nhãn đó là “Nhập giá trị cần bổ sung”, textbox tương ứng với nhãn điều kiện 2 cũng hiện lên và để trống, con trỏ đặt tại textbox đó.

- Khi người dùng nhập một giá trị vào textbox tương ứng với nhãn điều kiện 2 rồi nhấn phím Enter thì thực hiện kiểm tra xem dữ liệu nhập vào có hợp lệ không? (giá



trị nhập vào là số nguyên). Nếu dữ liệu không hợp lệ thì hiện lên hộp thoại thông báo và cho phép nhập lại, ngược lại thì thực hiện bổ sung giá trị x ( x là giá trị nhập ở textbox tương ứng với nhãn điều kiện 2) vào vị trí thứ k (với k là giá trị nhập ở texthox tương ứng với nhãn điều kiện 1), sau đó hiển thị dãy kết quả ra textbox tương ứng với nhãn kết quả.

- Khi người dùng kích vào nút loại bỏ thì Label điều kiện 1 và textbox tương ứng với nó hiện lên, Label điều kiện 2 và textbox tương ứng với nó ẩn. Thuộc tính text của nhãn điều kiện 1 là “Nhập vị trí cần loại bỏ”, textbox tương ứng với nhãn này để trống và con trỏ đặt tại ô đó cho phép người dùng nhập vào một giá trị.

- Khi người dùng nhập một giá trị vào textbox tương ứng với nhãn điều kiện rồi nhấn phím Enter thì thực hiện kiểm tra xem giá trị nhập vào có hợp lệ không? (giá trị nhập vào là số nguyên dương). Nếu dữ liệu không hợp lệ thì hiện lên hộp thoại thông báo và cho phép nhập lại, ngược lại thực hiện xóa giá trị phần tử thứ k ra khỏi dãy (với k là giá trị của texbox tương ứng với nhãn điều kiện 1) và hiển thị lại dãy ra textbox tương ứng với nhãn kết quả.

- Khi người dùng kích vào nút “ Tìm kiếm”: Label điều kiện 2 và textbox tương ứng với nó ẩn, Label điều kiện 1 và nhãn tương ứng với nó hiện lên, thuộc tính text của nhãn điều kiện 2 là “ Nhập giá trị cần tìm kiếm” và textbox tương ứng với nhãn này để trống; con trỏ đặt ở đó chờ người dùng nhập vào một giá trị.

- Khi người dùng nhập một giá trị vào textbox tương ứng với nhãn điều kiện 2 rồi nhấn phím Enter thì thực hiện kiểm tra xem giá trị nhập vào có hợp lệ không? (giá trị nhập vào phải là số nguyên). Nếu không hợp lệ thì hiện lên hộp thoại thông báo và cho phép nhập lại, ngược lại thì hiện tìm xem x có trong dãy không (với x là giá trị của textbox tương ứng với nhãn điều kiện 1), kết quả hiện thị lên textbox 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 thoát khỏi chương trình.

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

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

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

Theo yêu cầu của bài toán thì phải có một Form chứa:

- Các đối tượng có nội dung “MỘT SỐ THAO TÁC TRÊN MẢNG MỘT CHIỀU”,”Nhập kích thước mảng”, “Nhập giá trị”, “Dãy vừa nhập”, “Kết quả”, “Điều kiện 1”, “Điều kiện 2” là các Label.

- Các đối tượng ô để nhập kích thước mảng, giá trị, điều kiện 1, điều kiện 2 và để hiển thị dãy vừa nhập, kết quả là các Textbox.


- Các nút “Thanh lọc”, “Bổ sung”, “Loại bỏ”, “Tìm kiếm”, “Thoát” là các Button.

- Đối tượng điều kiện là GroupBox.

3. Các bước thực hiện

Như vậy, để thực hiện công việc thiết kế Form như yêu cầu bài toán, người lập trình thực hiện các bước sau:

Bước 1. Mở C#

Bước 2. Tạo Form mới

Bước 3. Thiết kế Form theo mẫu và gắn các điều khiển

- Để tạo điểu khiển MỘT SỐ THAO TÁC TRÊN MẢNG MỘT CHIỀU theo yêu cầu cần thực hiện:

+ Kéo điều khiển Label từ cửa sổ Toolbox

+ Kích phải chuột vào Label chọn Properties và thiết lập các thuộc tính cho Label như sau:

Text: MỘT SỐ THAO TÁC TRÊN MẢNG MỘT CHIỀU

Font: Time New Roman Size: 14

Font style: True

Trên menu chọn Format/Center in form/Horizontally để căn giữa.

Thực hiện thao tác tương tự với Label nhập kích thước mảng, nhập giá trị, dãy vừa nhập, kết quả, điều kiện 1, điều kiện 2.

- Để tạo điều khiển textbox tương ứng với nhãn nhập kích thước mảng theo yêu cầu cần thực hiện:

+ Kéo điểu khiển Textbox từ cửa sổ Toolbox vào Form.

+ Kích phải chuột vào Textbox chọn Properties và thiết lập các thuộc tính cho Textbox như sau:

Name: txt_n

Font: Time New Roman Size: 11

Thực hiện tương tự với các textbox tương ứng với nhãn nhập giá trị, hiển thị, điều kiện 1, điều kiện 2.

- Để tạo GroupBox điều kiện theo yêu cầu cần thực hiện như sau:

+ Kéo điều khiển GroupBox từ cửa sổ Toolbox vào Form.

+ Kích phải chuột vào GroupBox chọn Properties và thiết lập các thuộc tính cho GroupBox như sau:

Text: Điều kiện

Font: Time New Roman



Size: 11

- Để tạo điều khiển Button thanh lọc theo yêu cầu cần thực hiện như sau:

+ Kéo điều khiển Button từ cửa sổ Toolbox vào Form.

+ Kích phải chuột vào Button và thiết lập các thuộc tính cho Button này: Name: bt_thanhloc

Text: Thanh lọc

Font: Time New Roman Size: 11

Thực hiện tương tự với các Button: Bổ sung, loại bỏ, tìm kiếm và thoát. Bước 4. Kết quả thiết kế

Hình 1 54 Kết quả thiết kế Form bài tập mảng một chiều Bước 5 Viết mã 3

Hình 1. 54. Kết quả thiết kế Form bài tập mảng một chiều

Bước 5. Viết mã lệnh cho các sự kiện

- Viết mã lệnh khai báo mảng số nguyên, biến nguyên n, biến spt để đếm số phần tử nhập vào; các biến kt_loaibo, kt_bosung,kt_timkiem để đánh dấu sự kiện kích chuột vào các nút tương ứng.

int[] A = new int [100]; int n, spt = 0; bool kt_loaibo = false, kt_bs = false, kt_timkiem = false;

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

private void Form1_Load(object sender, EventArgs e)

{

group_dieukien.Visible = false; txt_giatri.Enabled = false; txt_hienthi.Enabled = false;

txt_ketqua.Enabled = false; txt_ketqua.ResetText(); vohieuhoa(false);

txt_n.ResetText(); txt_n.Focus();

}

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

thước mảng



private void txt_n_KeyUp(object sender, KeyEventArgs e)

{

if (e.KeyCode == Keys.Enter) if (kiemtra_dulieu())

{

txt_giatri.Enabled = true; txt_giatri.Focus();

}

else { MessageBox.Show("Nhập sai giá trị n"); txt_n.Focus(); }

}

- Viết mã lệnh cho sự kiện KeyUp của textbox tương ứng với nhãn giá trị

private void txt_giatri_KeyUp(object sender, KeyEventArgs e)

{

bool kt;

if (e.KeyCode == Keys.Enter) do

{

kt= int.TryParse(txt_giatri.Text, out A[spt]);

if (kt) { txt_hienthi.Text += A[spt].ToString() + " "; spt++; txt_giatri.ResetText(); txt_giatri.Focus(); }

if (spt == n) { MessageBox.Show("Nhập xong dãy", "Thông báo"); vohieuhoa(true); txt_giatri.Enabled = false; txt_n.Enabled = false; }

}while (!kt);

}

- Viết mã lệnh cho sự kiện kích chuột vào nút thanh lọc

private void bt_thanhloc_Click(object sender, EventArgs e)

{

int i, j; txt_ketqua.ResetText(); i = 0;

while (i < n)

{

j = i + 1; while (j<n)

if (A[i] == A[j])

{

for (int k = j; k < n - 1; k++) A[k] = A[k + 1]; n--;

}

else j++; i++;

}

for (i = 0; i < n; i++) txt_ketqua.Text += A[i].ToString()+" ";

}

- Viết mã lệnh cho sự kiện kích chuột vào nút bổ sung

private void bt_bosung_Click(object sender, EventArgs e)

{

kt_bs = true; txt_ketqua.ResetText(); group_dieukien.Visible = true;



lb_dieukien2.Visible = false; txt_dieukien2.Visible = false; lb_dieukien1.Text = "Nhập vị trí cần bổ sung"; txt_dieukien1.TabIndex = 1; txt_dieukien1.Focus(); txt_dieukien1.ResetText();

}

- Viết mã lệnh cho sự kiện KeyUp của textbox tương ứng với nhãn điều kiện 1

private void txt_dieukien1_KeyUp(object sender, KeyEventArgs e)

{

bool kt; int k;

if (kt_bosung == true)

{

if (e.KeyCode == Keys.Enter)

{

if (kiemtra(txt_dieukien1.Text)) { MessageBox.Show("Bạn chưa nhập vị trí k"); txt_dieukien1.Focus(); }

else

{

kt = int.TryParse(txt_dieukien1.Text, out k); if (!kt || k <= 0 || k > n) MessageBox.Show("Không có vị trí thứ k"); else

{

group_dieukien.Visible = true; lb_dieukien2.Visible = true;

lb_dieukien2.Text = "Nhâp giá trị cần bổ sung"; txt_dieukien2.Visible = true; txt_dieukien2.TabIndex = 1; txt_dieukien2.Focus(); kt_bosung = false;

}

}

}

}

else if (kt_timkiem == true)

{

int x;

if (e.KeyCode == Keys.Enter)

{

if (kiemtra(txt_dieukien1.Text)) { MessageBox.Show("Bạn chưa nhập giá trị càn tìm kiếm"); txt_dieukien1.Focus(); }

else

{

kt = int.TryParse(txt_dieukien1.Text, out x);

if (!kt) MessageBox.Show("Giá trị cần tìm kiếm không hợp lệ"); else

{



int i = 0;

while (i < n && A[i] != x) i++;

if (i < n) txt_ketqua.Text = x.ToString() + " có trong dãy"; else txt_ketqua.Text = x.ToString() + " không có trong dãy";

kt_timkiem = false;

}

}

}

}

else if (kt_loaibo == true) // thực hiện loai bo

{


if (e.KeyCode == Keys.Enter)

{

if (kiemtra(txt_dieukien1.Text)) { MessageBox.Show("Bạn chưa nhập vị trí cần loại bỏ"); txt_dieukien1.Focus(); }

else

{

kt = int.TryParse(txt_dieukien1.Text, out k);

if (!kt||k<=0||k>n) MessageBox.Show("Vị trí thứ k không hợp

lệ");

else

{

for (int i = k-1; i < n; i++) A[i] = A[i + 1]; n--;

for (int i = 0; i < n; i++) txt_ketqua.Text+= A[i].ToString(); kt_loaibo = false;

}

}

}

}

}


- Viết mã lệnh cho sự kiện KeyUp của textbox tương ứng với nhãn điều kiện 2

private void txt_dieukien2_KeyUp(object sender, KeyEventArgs e)

{

bool kt; int x;

if (e.KeyCode == Keys.Enter)

{

if (kiemtra(txt_dieukien2.Text))

{ MessageBox.Show("Bạn chưa nhập giá trị cần bổ sung"); txt_dieukien2.Focus(); }

else

{

kt = int.TryParse(txt_dieukien2.Text, out x);

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

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