Bagan perkalian

Oct 13 2020

Saya mencoba membuat bagan perkalian seperti yang ada di gambar, saya cukup baru dalam pengkodean dan tidak tahu harus mulai dari mana. Saya telah menyertakan gambar dengan keluaran yang saya miliki sejauh ini, serta kode di bawah ini. Bantuan apa pun akan dihargai.

Output yang saya dapatkan

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

Jawaban

CaiusJard Oct 14 2020 at 08:37

Mulailah sedikit demi sedikit dan tingkatkan. Berikut algoritme untuk loop yang mengeluarkan hitungan dari 1 hingga 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

Berikut algoritme yang mencetak tabel perkalian:

'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

Semoga Anda bisa melihat ini hanyalah evolusi kecil dari algo pertama. Anda menyetel waktu menjadi 1, ini akan mencetak hal yang sama seperti yang pertama dilakukan. Anda setel ke 2, tabel perkalian 2 akan dicetak, dll

Sekarang ubah algo lagi, kali ini menggunakan loop untuk mengubah variabel timestable sepuluh kali:

'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

Ini sekarang akan mencetak tabel perkalian dari 1 sampai 10

Anda mungkin tidak hanya memiliki beberapa hal pemformatan yang harus diurus. Jika Anda benar-benar mengikuti instruksi ini, maka output Anda akan terlihat seperti:

12345678910
2468101214161820

Anda dapat menambahkan spasi antara:

1 2 3 4 5 6 7 8 9 10
2 4 6 8 10 12 14 16 18 20

Masih belum selaras, bukan? Kita dapat melakukannya dengan beberapa logika, karena ini agak sederhana:

'print out the result of "number" multiplied by "timestable"

Mungkin ini akan bekerja lebih baik:

'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

Tiba-tiba kami mendapatkan:

  1  2  3  4  5  6  7  8  9 10
  2  4  6  8 10 12 14 16 18 20

Kemudian Anda hanya memiliki beberapa bulu untuk ditambahkan di sekitar header pencetakan, dll.

Anda akan melihat bahwa saya belum memposting kode apa pun, karena ini adalah pekerjaan rumah Anda, bukan milik saya. Saya tahu bagaimana melakukannya, tetapi jika saya melakukannya untuk Anda, itu merampas kesempatan Anda untuk mempelajari proses ini sendiri. Hasil akhir Anda seharusnya memiliki banyak komentar seperti komentar yang saya tulis di sini (versi algoritme Anda seperti yang Anda pahami), dengan kode di bawahnya. Bahkan jika Anda tidak pernah membuatnya berfungsi sebagai tuntutan spesifikasi, Anda harus menyerahkan kode dan komentar sehingga instruktur dapat melihat di mana pemikiran Anda salah (algo dalam komentar salah) atau di mana pemikiran Anda benar tetapi jawaban Anda ( kode yang Anda tulis) salah. Ini seperti "menunjukkan latihan Anda" dalam ujian matematika

Mary Oct 16 2020 at 20:51

Tidak masuk akal untuk menggunakan jenis pengulangan yang salah. Jelaskan hal ini kepada instruktur Anda.

Juga tidak masuk akal untuk menggunakan jenis kontrol yang salah untuk menampilkan data Anda. A ListBoxuntuk daftar. Data Anda lebih seperti tabel daripada daftar. A DataGridViewdimaksudkan untuk menampilkan data tabel. Tambahkan a DataGridViewke Formulir Anda.

A DataTableadalah kelas dalam .Net Framework yang dimaksudkan sebagai representasi dalam memori dari sebuah tabel (kolom dan baris). Anda dapat mengisinya ke dalam memori dan kemudian menggunakannya sebagai DataSourcea DataGridViewuntuk menampilkan data. Ini lebih efisien daripada terus mengubah tampilan saat Anda menambahkan data.

Latihan ini harus menjadi pengantar yang baik DataTableyang merupakan alat yang sangat berguna saat Anda memulai pekerjaan database.

Kenaikan Forloop i(atau apa pun yang Anda beri nama variabel Anda) secara default sebesar 1.

Pertama kita membuat DataTablevariabel seperti lainnya hanya dengan Newkata kunci karena kita membuat instance kelas. Selanjutnya tambahkan kolom yang Anda butuhkan. Kolom pertama adalah X dan kemudian angka 1 sampai 10.

Sekarang tambahkan data (baris). Kolom pertama dan kedua dari setiap baris adalah adil i. Kolom ketiga adalah ix 2 dan seterusnya ..

Terakhir, kami mengatur DataSourceproperti dari DataGridViewmenjadi diisi DataTable( dt) dan merapikan sedikit agar terlihat bagus. Ada banyak properti untuk menyesuaikan tampilan 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
Arya Oct 15 2020 at 10:01

Kunci dari masalah ini terletak pada perhitungan bilangan dan penanganan spasi. Anda dapat menggunakan dua Forloop untuk kalkulasi numerik.

For x As Integer = 1 To 10
   For y As Integer = 1 To 10
   Next
Next

Selain itu, karena baris pertama, kolom pertama unik. Mereka tidak dihitung. Jadi kami harus melakukan perlakuan khusus.

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

Penanganan ruang:
Silakan menilai ukuran nomor saat ini.
Misalnya:
7 7 14 21 28 ... 98
105112 num (i) mewakili bilangan saat ini, num(i)=(x-1)*y
num (i + 1) mewakili bilangan setelah num (i),num(i+1)=(x-1)*(y+1)

Jika num(i + 1)<10, ada 5 spasi setelah angka di depannya.
Jika 10 <num(i + 1)<100, ada 3 spasi setelah angka di depannya.
Jika num(i + 1)> 100, ada spasi setelah angka di depannya.

Kode Detil:

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

Akhiri Kelas

Hasil: