Bài Tập Về Mảng Một Chiều



Bài 5

Lập chương trình sử dụng các điều khiển: RichTextBox, TextBox, Button cho phép người sử dụng nhập các ký từ vào RichTextBox. Nếu người dùng nhấn một ký tự là chữ cái thì ký tự đó trong “bảng chữ cái” chuyển sang màu đỏ, khi thả phím ra thì màu chữ trở lại màu đen. Nếu người dùng kích chuột vào nút “Đếm số” sẽ đếm số chữ số khác nhau và hiển thị như hình sau:

Bài 6 Hình 1 47 Giao diện mẫu Viết chương trình thực hiện các yêu cầu sau 1



Bài 6

Hình 1. 47. Giao diện mẫu


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

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

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


Hình 1 48 Giao diện mẫu 1 Thiết kế form như hình trên khi chương trình vừa 2

Hình 1. 48 Giao diện mẫu

1. Thiết kế form như hình trên, khi chương trình vừa bắt đầu thì 3 label sẽ hiển thị ba số 7, máy tính có 100 đồng và người chơi có 100 đồng.

2. Khi kích vào nút “Quay số”:

Luật chơi: Mỗi lần quay số, người chơi trả trước 30 đồng, tương ứng là máy sẽ được cộng thêm 30 đồng. Và nếu người chơi có số tiền ít hơn 30 đồng thì sẽ không được phép chơi tiếp. Nếu mỗi lần quay được số 7, người chơi sẽ được thưởng như sau:

- Nếu ô đầu tiên là số 7 (random từ 0 đến 8), được thưởng 100 đồng + 50% số tiền của máy.

- Nếu ô số 2 là số 7(random từ 0 đến 9), người chơi được thưởng 30 đồng + 50% tiền của máy.

- Nếu ô số 3 là số 7(random từ 0 đến 10), người chơi được thưởng 10 đồng;

(số tiền người chơi sẽ được cộng dồn nếu cả 3 ô cùng là số 7, tiền máy sẽ giảm đi phần


trăm tương ứng).

3. Khi kích vào nút “Game mới”: Reset lại các label và các textbox tương ứng.

4. Khi kích vào nút “Kết thúc”: thực hiện đóng chương trình.

Bài 7

Thiết kế giao diện trình bày sơ đồ các chỗ ngồi của một rạp chiếu phim giúp người sử dụng chọn vị trí muốn mua như hình. Trên sơ đồ này cũng thể hiện những vị trí đã bán vé và những vị trí chưa bán vé bằng cách thể hiện màu khác nhau (ghế chưa bán vé màu trắng, ghế đã bán vé màu vàng, ghế đang chọn màu xanh).

Hình 1 49 Giao diện mẫu Yêu cầu Khi khởi động ứng dụng phải nằm giữa màn 3

Hình 1. 49 Giao diện mẫu

Yêu cầu:

Khi khởi động, ứng dụng phải nằm giữa màn hình. Không cho phép người dùng thay đổi kích thước form. Khi người sử dụng nhấp chuột tại một vị trí trên sơ đồ thì:

- Nếu đây là vị trí chưa bán vé thì đổi màu của vị trí này sang màu xanh để cho biết đây là vị trí đang chọn.

- Nếu đây là vị trí đang chọn (có màu xanh) thì đổi màu của vị trí này trở về màu trắng.

- Nếu đây là một vị trí đã bán vé thì xuất hiện một thông báo cho người sử dụng biết thông qua messageBox.

Sau khi đã chọn các vị trí người sử sụng có thể nhấn vào nút CHỌN hoặc HỦY BỎ.

- Khi kích vào nút “Chọn” (hoặc nhấn phím Enter): đổi màu các vị trí đã chọn (màu xanh) trên sơ đồ sang màu vàng (cho biết vị trí đã bán vé) và xuất lên label thành tiền phải trả cho số vé đã mua ( giả sử giá vé là 50.000 VNĐ/ghế).

- Khi kích vào nút “Hủy bỏ” (hoặc nhấn phín ESC): đổi màu các vị trí đã chọn (màu xanh) trên sơ đồ sang màu trắng trở lại và xuất lên label thành tiền giá trị 0.

- Khi kích vào nút “Kết thúc”: thực hiện đóng chương trình.



1.2 – Làm việc với mảng 1 chiều

1.2.1. Tóm tắt các kiến thức cần nhớ

1. Mảng một chiều

a. Khai báo

Kiểu_dữ_liệu [] Tên_mảng;

hoặc Kiểu_dữ_liệu []Tên_mảng= new Kiểu_dữ_liệu [Số_phần_tử];

b. Truy cập đến các phần tử trong mảng một chiều

Tên_mảng[chỉ_số];

1.2.2. Bài tập mẫu

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 50 – Bài tập về mảng một chiều Yêu cầu Nhãn bài tập mảng một 4

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

Yêu cầu:

- Nhãn bài tập mảng một chiều: Font Time New Roman, chữ hoa, in đậm, cỡ chữ 14, căn giữa Form.

- Nhãn kích thước mảng, dãy vừa nhập, kết quả: Font Time New Roman, cỡ chữ 11.

- Điều khiển để nhập kích thước mảng là textbox, Font Time New Roman, cỡ chữ 14.

- Đối tượng ô để hiển thị dãy vừa nhập và dãy kết quả là các Textbox.

- Các điều khiển “Nhập dãy”, “Tìm giá trị nhỏ nhất”, “Xóa số âm đầu tiên”, “Sắp xếp dãy tăng dần”, “Kiểm tra cấp số cộng” là các Button.

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

- Khi Load Form:

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

+ Các đối tượng ô hiển thị dãy vừa nhập, kết quả vô hiệu hóa.

+ Các điều khiển “Nhập dãy”, “Tìm giá trị nhỏ nhất”, “Xóa số âm đầu tiên”, “Sắp xếp dãy tăng dần”, “Kiểm tra cấp số cộng” vô hiệu hóa.


- Khi người dùng nhập kích thước mảng vào Textbox tương ứng (giá trị nhập vào là số nguyên dương). Kiểm tra nếu dữ liệ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ì nút “Nhập dãy” sáng lên.

- Khi người dùng kích vào nút “Nhập dãy”:

+ Textbox nhập n bị vô hiệu hóa (không cho phép hoạt động).

+ Hiện lên hộp thoại cho phép người dùng nhập dãy gồm n số nguyên (n là kích thước mảng, kiểm tra sự hợp lệ của dữ liệu nhập vào).

+ Khi nhập xong dãy số nguyên thì nút “Nhập dãy” vô hiệu hóa, các nút “Tìm giá trị nhỏ nhất”, “Xóa số âm đầu tiên”, “Sắp xếp dãy tăng dần”, “Kiểm tra cấp số cộng” sáng lên.

- Khi người dùng kích vào nút “Tìm giá trị nhỏ nhất”: Thực hiện tìm giá trị nhỏ nhất của dãy số nguyên vừa nhập và hiển thị kết quả lên textbox kết quả.

- Khi người dùng kích vào nút: “Xóa số âm đầu tiên”: Thực hiện loại bỏ khỏi dãy số âm đầu tiên, hiển thị dãy sau khi xóa số âm đầu tiên ra textbox kết quả.

- Khi người dùng kích vào nút “Sắp xếp dãy tăng dần”: Thực hiện sắp xếp dãy theo thứ tự tăng dần, hiển thị dãy sau khi đã sắp xếp ra textbox kết quả.

- Khi người dùng kích vào nút: “Kiểm tra cấp số cộng”: Thực hiện kiểm tra xem dãy có lập thành cấp số cộng hay không? Thông báo kết quả ra textbox 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 “BÀI TẬP VỀ MẢNG MỘT CHIỀU”,”Nhập kích thước mảng”, “Dãy vừa nhập”, “Kết quả” là các Label.

- Các đối tượng ô để hiển thị dãy vừa nhập, kết quả là các Textbox.

- Các nút “Nhập dãy”, “Tìm giá trị nhỏ nhất”, “ Xóa số âm đầu tiên”, “Sắp xếp dãy tăng dần”, “Kiểm tra cấp số cộng”, “Thoát” là các Button.

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

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

- Để tạo điểu khiển BÀI TẬP VỀ 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: BÀI TẬP VỀ MẢNG MỘT CHIỀU

Font: Time New Roman




quả.

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, dãy vừa nhập, kết


- Để tạo điều khiển txt_hienthi tương ứng với nhãn Dãy vừa nhập 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_hienthi

Font: Time New Roman Size: 11

Thực hiện tương tự với textbox kết quả.

- Để tạo điều khiển Button nhập dãy 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_Nhap

Text: Nhập dãy

Font: Time New Roman Size: 11

Thực hiện tương tự với các nút “ Thoát”, “Tìm giá trị nhỏ nhất”, “Xóa số âm đầu tiên”, “Sắp xếp dãy tăng dần”, “Kiểm tra cấp số cộng”.

Kết quả thiết kế Form

Hình 1 51 Thiết kế Form các thao tác trên mảng một chiều Viết mã lệnh cho các 5

Hình 1. 51. Thiết kế Form các thao tác trên mảng một chiều

Viết mã lệnh cho các sự kiện

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



private void Form1_Load(object sender, EventArgs e)

{

txt_n.Enabled = true; txt_n.Focus(); txt_hienthi.Enabled = false; txt_ketqua.Enabled = false; vohieuhoa(false);

}

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

void vohieuhoa(bool gt)

{

bt_min.Enabled = gt; bt_sapxep.Enabled = gt; bt_xoa.Enabled = gt; bt_lietkeSNT.Enabled = gt;

}

- Sự kiện MouseUp của textbox nhập kích thước

private void txt_n_KeyUp(object sender, KeyEventArgs e)

{

bt_Nhapday.Enabled= true;

}

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

bool kiemtr(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 dãy

private void bt_Nhap_Click(object sender, EventArgs e)

{

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

{

txt_n.Enabled = false; A = new int[n + 1];

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

{



kt = int.TryParse(Microsoft.VisualBasic.Interaction.InputBox("Nhap phan tu thu" + i.ToString() + "=", "Nhap phan tu"), out A[i]);

if (kt) txt_hienthi.Text += A[i].ToString()+ " " ;

} while (!kt); vohieuhoa(true); bt_Nhap.Enabled = false;

}

else

{

MessageBox.Show("Nhap sai n", "Thong bao"); txt_n.Enabled = true;

txt_n.ResetText(); txt_n.Focus(); bt_Nhap.Enabled = false;

}

}

- Viết mã lệnh cho sự kiện kích chuột vào nút tìm giá trị nhỏ nhất

private void bt_min_Click(object sender, EventArgs e)

{

int min = A[0];

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

if (A[i]< min) min = A[i]; txt_ketqua.Text = min.ToString();

}

- Viết mã lệnh cho hàm kiểm tra số nguyên n có phải là số nguyên tố hay

không?

bool ktsnt(int n)

{

bool kt;

if (n < 2) kt = false; else

{ kt = true;

for(int i=2; i<=n/2;i++) if (n % i == 0)

{ kt = false; break;

}

}

return kt;

}

- Viết mã lệnh cho sự kiện kích chuột vào nút xóa số âm đầu tiên trong dãy

private void bt_xoa_Click(object sender, EventArgs e)

{

int i = 0; txt_ketqua.ResetText(); while (i < n && A[i] >= 0) i++; if (i < n)

{



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

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

}

else txt_ketqua.Text = "Dãy không có số âm";

}

- Viết mã lệnh cho sự kiện kích chuột vào nút sắp xếp dãy tăng dần

private void bt_sapxep_Click(object sender, EventArgs e)

{

int tg;

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

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

{

tg = A[i];

A[i] = A[j];

A[j] = tg;

}

txt_ketqua.ResetText();

for (int 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 kiểm tra cấp số cộng

private void bt_lietkeSNT_Click(object sender, EventArgs e)

{

if (KT_CSC(A, n)) txt_ketqua.Text = "Dãy có lập thành cấp số

cộng";

else txt_ketqua.Text = "Dãy không lập thành cấp số cộng";

}

-Viết mã lệnh cho hàm kiểm tra xem dãy có lập thành cấp số cộng hay không?

bool KT_CSC(int[] A, int n)

{

bool kt; int d;

if (n < 2) kt = false; else

{

kt = true; d = A[1] - A[0]; for(int i=2; i<n;i++)

if (A[i] - A[i - 1] != d)

{ kt = false; break; }

}

return kt;

}

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

Xem toàn bộ nội dung bài viết ᛨ

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

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