Biểu đồ nhân
Tôi đang cố gắng tạo một biểu đồ nhân giống như trong hình, tôi còn khá mới với việc viết mã và không biết bắt đầu từ đâu. Tôi đã bao gồm một hình ảnh với đầu ra mà tôi có cho đến nay, cũng như mã bên dưới. Bất kỳ trợ giúp sẽ được đánh giá cao.
Đầu ra tôi đang nhận được
Public Class frmL24
Private Sub btnCreateChart_Click(sender As Object, e As EventArgs) Handles btnCreateChart.Click
Dim j As Integer = 1
Dim i As Integer = 1
While (j <= 5)
While (i <= 5)
lstChart.Items.Add(String.Format(i * j))
i += 1
End While
i = 1
j += 1
End While
End Sub
End Class
Trả lời
Bắt đầu từng phần và xây dựng nó. Đây là thuật toán cho một vòng lặp phát ra số đếm từ 1 đến 10
'Start with a variable inited to 1
'while that variable is less than or equal to 10
'print out the variable (by print I mean "add it onto the end of a textbox text")
'increment the variable
'loop
Đây là một thuật toán in ra bảng thời gian:
'have a variable for the times table we're doing, start with the 1 times table, call the variable "timestable"
'Start with a variable inited to 1, call it "number"
'while "number" is less than or equal to 10
'print out the result of "number" multiplied by "timestable"
'increment the value of "number"
'loop
Hy vọng rằng bạn có thể thấy đây chỉ là một bước tiến hóa nhỏ của bí danh đầu tiên. Bạn đặt thời gian là 1, nó sẽ in giống như lần đầu tiên đã làm. Bạn đặt nó thành 2, nó sẽ in bảng 2 lần, v.v.
Bây giờ sửa đổi lại thuật toán, lần này sử dụng vòng lặp để thay đổi biến thời gian mười lần:
'have a variable for the times table we're doing, start with the 1 times table, call the variable "timestable"
'while "timestable" is less than or equal to 10
'Start with a variable inited to 1, call it "number"
'while "number" is less than or equal to 10
'print out the result of "number" multiplied by "timestable"
'increment the value of "number"
'loop
'increment the "timestable" variable
'loop
Điều này bây giờ sẽ in ra các bảng thời gian từ 1 đến 10
Bạn có thể không chỉ có một số định dạng để chăm sóc. Nếu bạn đã thực sự làm theo các hướng dẫn này thì đầu ra của bạn sẽ giống như sau:
12345678910
2468101214161820
Bạn có thể thêm khoảng trắng giữa:
1 2 3 4 5 6 7 8 9 10
2 4 6 8 10 12 14 16 18 20
Vẫn không được căn chỉnh tốt lắm, phải không? Chúng ta có thể làm với một số logic, bởi vì điều này hơi đơn giản:
'print out the result of "number" multiplied by "timestable"
Có lẽ điều này sẽ hoạt động tốt hơn:
'calculate the result of "number" multiplied by "timestable"
'if the result is less than 10, print 2 spaces then the result
'else print 1 space then the result
Đột nhiên chúng tôi nhận được:
1 2 3 4 5 6 7 8 9 10
2 4 6 8 10 12 14 16 18 20
Sau đó, bạn chỉ cần có một số lông tơ để thêm xung quanh tiêu đề in, v.v.
Bạn sẽ lưu ý rằng tôi chưa đăng bất kỳ mã nào, vì đây là bài tập về nhà của bạn, không phải của tôi. Tôi biết phải làm thế nào để làm điều đó, nhưng nếu tôi làm điều đó cho bạn, nó sẽ cướp đi cơ hội để bạn tự tìm hiểu quá trình này. Kết quả cuối cùng của bạn hoàn toàn nên có một loạt các nhận xét giống như các nhận xét tôi đã viết ở đây (phiên bản thuật toán của bạn như bạn hiểu nó), với mã bên dưới. Ngay cả khi bạn không bao giờ làm cho nó hoạt động như yêu cầu kỹ thuật, bạn nên cung cấp mã và nhận xét để người hướng dẫn có thể thấy suy nghĩ của bạn sai ở đâu (thuật ngữ trong nhận xét là sai) hoặc suy nghĩ của bạn đúng nhưng câu trả lời của bạn ( mã bạn đã viết) bị sai. Điều này giống như "thể hiện sự nỗ lực của bạn" trong các kỳ thi toán
Không có ý nghĩa gì nếu sử dụng sai loại vòng lặp. Giải thích điều này cho người hướng dẫn của bạn.
Việc sử dụng sai loại điều khiển để hiển thị dữ liệu của bạn cũng không có ý nghĩa gì. A ListBoxlà danh sách. Dữ liệu của bạn giống như một bảng hơn là một danh sách. A DataGridViewđược dùng để hiển thị dữ liệu dạng bảng. Thêm một DataGridViewvào Biểu mẫu của bạn.
A DataTablelà một lớp trong .Net Framework có nghĩa là một biểu diễn trong bộ nhớ của một bảng (cột và hàng). Bạn có thể lấp đầy nó trong bộ nhớ và sau đó sử dụng nó như DataSourcecủa một DataGridViewđể hiển thị dữ liệu. Điều này hiệu quả hơn việc liên tục thay đổi màn hình khi bạn thêm dữ liệu.
Bài tập này sẽ là một phần giới thiệu tốt về DataTablenó là một công cụ rất hữu ích khi bạn bắt đầu công việc cơ sở dữ liệu.
Các Forgia số vòng lặp i(hoặc bất cứ điều gì bạn đặt tên biến của bạn) theo mặc định bởi 1.
Đầu tiên, chúng ta tạo một DataTablebiến giống như bất kỳ biến nào khác chỉ với Newtừ khóa vì chúng ta đang tạo một thể hiện của một lớp. Tiếp theo thêm các cột bạn cần. Cột đầu tiên là X và sau đó là các số từ 1 đến 10.
Bây giờ hãy thêm dữ liệu (các hàng). Cột đầu tiên và cột thứ hai của mỗi hàng là vừa i. Cột thứ ba là ix 2, v.v.
Cuối cùng, chúng tôi đặt thuộc DataSourcetính của thành DataGridViewđiền DataTable( dt) của chúng tôi và chỉnh sửa một chút để làm cho nó trông đẹp. Có một loạt các thuộc tính để tùy chỉnh sự xuất hiện của a DataGridView.
Private Sub OPCode()
Dim dt As New DataTable
dt.Columns.Add("X", GetType(Integer))
For i = 1 To 10
dt.Columns.Add(i.ToString, GetType(Integer))
Next
For i = 1 To 10
dt.Rows.Add(i, i, i * 2, i * 3, i * 4, i * 5, i * 6, i * 7, i * 8, i * 9, i * 10)
Next
DataGridView1.DataSource = dt
DataGridView1.AutoResizeColumns()
DataGridView1.AutoResizeRows()
'To make the numbers line up nicely
For Each col As DataGridViewColumn In DataGridView1.Columns
col.DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight
Next
End Sub
Mấu chốt của vấn đề này nằm ở việc tính toán số lượng và xử lý khoảng trắng. Bạn có thể sử dụng hai Forvòng lặp để tính toán số.
For x As Integer = 1 To 10
For y As Integer = 1 To 10
Next
Next
Ngoài ra, vì hàng đầu tiên, cột đầu tiên là duy nhất. Chúng không được tính toán. Vì vậy chúng tôi phải tiến hành xử lý đặc biệt.
Dim arr(10) As String
For x As Integer = 1 To 10
If x = 1 Then
i = x - 1
arr(i) += arr(i) + "x" + space5
Else
i = x - 1
arr(i) += arr(i) + i.ToString + space5
End If
…….
Next
Xử lý không gian:
Vui lòng đánh giá kích thước của số hiện tại.
Vd:
7 7 14 21 28 ... 98 105 112
num (i) đại diện cho số hiện tại, num(i)=(x-1)*y
num (i + 1) đại diện cho số sau num (i),num(i+1)=(x-1)*(y+1)
Nếu num(i + 1)<10, có 5 khoảng trắng sau số phía trước nó.
Nếu 10 <num(i + 1)<100, có 3 khoảng trắng sau số phía trước nó.
Nếu num(i + 1)> 100, có một khoảng trắng sau số phía trước nó.
Mã chi tiết:
Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim i As Integer
Dim arr(10) As String
For x As Integer = 1 To 10
Dim space5 As String = " "
Dim space3 As String = " "
If x = 1 Then
i = x - 1
arr(i) += arr(i) + "x" + space5
Else
i = x - 1
arr(i) += arr(i) + i.ToString + space5
End If
For y As Integer = 1 To 10
If x = 1 Then
If y = 9 Then
arr(i) += (x * y).ToString + space3
Else
arr(i) += (x * y).ToString + space5
End If
Else
If ((x - 1) * (y + 1)) < 10 Then
arr(i) += ((x - 1) * y).ToString + space5
Else
arr(i) += ((x - 1) * y).ToString + space3
End If
End If
Next
ListBox1.Items.Add(arr(i))
Next
End Sub
Kết thúc lớp học
Kết quả: