b) Chuyển tham số bằng giá trị (tham trị)
6.4. Một số thuật toán về mảng
Dạng 1: Tìm giá trị lớn nhất hoặc nhỏ nhất trong mảng
Ví dụ: Nhập vào một mảng số nguyên gồm n phần tử. Tìm giá trị lớn nhất trong mảng. In kết quả ra màn hình. Yêu cầu:
Sử dụng các đối tƣợng Form, Lable, Textbox, Command Button,… để thiết kế giao diện bài toán
Viết mã lệnh bài toán. Hƣớng dẫn:
Thiết kế giao diện
Thoát Xử Lý
Kết Quả txtKQ
cmdXuLy cmdThoat
Mã lệnh bài toán.
Private Sub cmdThoat_Click() End
End Sub
Private Sub cmdXuLy_Click()
Dim i As Integer, n As Integer, max As Integer Dim a(1 To 100) As Integer
Do
_63_ Loop Until n > 0 And n <= 100 For i = 1 To n
a(i) = Val(InputBox("Nhap a(" + Str(i) + ") = ")) Next i
max = a(1) For i = 2 To n
If a(i) > max Then max = a(i) End If
Next i
txtKQ.Text = "Gia Tri Lon Nhat = " + Str(max) End Sub
Dạng 2: Sắp xếp các phần tử của mảng theo thứ tự tăng hoặc giảm dần
Ví dụ: Nhập vào một mảng số nguyên gồm n phần tử. Sắp xếp các phần tử trong mảng theo thứ tự giảm dần. In kết quả ra màn hình. Yêu cầu:
Sử dụng các đối tƣợng Form, Lable, Textbox, Command Button,… để thiết kế giao diện bài toán
Viết mã lệnh bài toán. Hƣớng dẫn:
Thiết kế giao diện
Thoát Xử Lý
Kết Quả txtKQ
cmdXuLy cmdThoat
Mã lệnh bài toán.
Private Sub cmdThoat_Click() End
End Sub
_64_
Dim i As Integer, j As Integer, n As Integer, tg As Integer Dim a(1 To 100) As Integer
Do
n = Val(InputBox("Nhap n = ")) Loop Until n > 0 And n <= 100 For i = 1 To n
a(i) = Val(InputBox("Nhap a(" + Str(i) + ") = ")) Next i
For i = 1 To n-1 For j = i+1 to n
If a(i) < a(j) Then tg = a(i) a(i) = a(j) a(j) = tg End If Next j Next i txtKQ.Text = "" For i = 1 to n
txtKQ.Text = txtKQ.Text + Str(a(i)) + “;” Next i
End Sub
Dạng 3: Chèn một phần tử b vào vị trí k của mảng
Ví dụ: Nhập vào một mảng số nguyên gồm n phần tử. Chèn số b vào vị trí thứ k trong mảng. In kết quả ra màn hình. Yêu cầu:
Sử dụng các đối tƣợng Form, Lable, Textbox, Command Button,… để thiết kế giao diện bài toán
Viết mã lệnh bài toán. Hƣớng dẫn:
_65_ Thoát Xử Lý Kết Quả txtKQ cmdXuLy cmdThoat Mã lệnh bài toán.
Private Sub cmdThoat_Click() End
End Sub
Private Sub cmdXuLy_Click()
Dim i As Integer, b As Integer, k As Integer, n As Integer Dim a(1 To 100) As Integer
Do
n = Val(InputBox("Nhap n = ")) Loop Until n > 0 And n <= 100 For i = 1 To n
a(i) = Val(InputBox("Nhap a(" + Str(i) + ") = ")) Next i
b = Val(InputBox(“Nhap b = ”)) Do
k = Val(InputBox(“Nhap k = ”)) Loop Until k > 0 And k <= n
For i = n To k Step -1 a(i+1) = a(i) Next i a(k) = b n = n + 1 txtKQ.Text = "" For i = 1 to n
_66_ Next i
End Sub
Dạng 4: Xoá đi phần tử ở vị trí thứ k của mảng
Ví dụ: Nhập vào một mảng số nguyên gồm n phần tử. Xóa đi phần tử ở vị trí thứ k trong mảng. In kết quả ra màn hình. Yêu cầu:
Sử dụng các đối tƣợng Form, Lable, Textbox, Command Button,… để thiết kế giao diện bài toán
Viết mã lệnh bài toán. Hƣớng dẫn:
Thiết kế giao diện
Thoát Xử Lý
Kết Quả txtKQ
cmdXuLy cmdThoat
Mã lệnh bài toán.
Private Sub cmdThoat_Click() End
End Sub
Private Sub cmdXuLy_Click()
Dim i As Integer, k As Integer, n As Integer Dim a(1 To 100) As Integer
Do
n = Val(InputBox("Nhap n = ")) Loop Until n > 0 And n <= 100 For i = 1 To n
a(i) = Val(InputBox("Nhap a(" + Str(i) + ") = ")) Next i
Do
_67_ Loop Until k > 0 And k <= n For i = k To n - 1 a(i) = a(i+1) Next i n = n - 1 txtKQ.Text = "" For i = 1 to n
txtKQ.Text = txtKQ.Text + Str(a(i)) + “;” Next i
End Sub
Dạng 5: Một số bài toán khác về mảng
Ví dụ: Nhập vào một mảng số nguyên gồm n phần tử. Tính trung bình cộng của các phần tử chia hết cho 3 trong mảng. In kết quả ra màn hình. Yêu cầu:
Sử dụng các đối tƣợng Form, Lable, Textbox, Command Button,… để thiết kế giao diện bài toán
Viết mã lệnh bài toán. Hƣớng dẫn:
Thiết kế giao diện
Thoát Xử Lý
Kết Quả txtKQ
cmdXuLy cmdThoat
Mã lệnh bài toán.
Private Sub cmdThoat_Click() End
End Sub
Private Sub cmdXuLy_Click()
Dim i As Integer, n As Integer, tbc As Single, dem As Integer Dim a(1 To 100) As Integer
_68_ Do
n = Val(InputBox("Nhap n = ")) Loop Until n > 0 And n <= 100 For i = 1 To n
a(i) = Val(InputBox("Nhap a(" + Str(i) + ") = ")) Next i
tbc = 0 d = 0
For i = 1 To n
If a(i) MOD 3 = 0 Then tbc = tbc + a(i) d = d + 1 End If
Next i
If d = 0 Then
txtKQ.Text = "Mang khong ton tai phan tu nao chia het cho 3" Else
tbc = tbc/dem
txtKQ.Text = “TBC = ” + Str(dem) End If