Çarpım tablosu
Resimdeki gibi bir çarpım tablosu oluşturmaya çalışıyorum, kodlamada oldukça yeniyim ve nereden başlayacağımı bile bilmiyorum. Şimdiye kadar sahip olduğum çıktıya aşağıdaki kodun yanı sıra bir resim ekledim. Herhangi bir yardım memnuniyetle karşılanacaktır.
Çıktı alıyorum
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
Yanıtlar
Parça parça başlayın ve geliştirin. İşte 1'den 10'a kadar bir sayı yayan bir döngü için algoritma
'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
İşte bir çarpım tablosu yazdıran bir algoritma:
'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
Umarım bunun ilk algo'nun küçük bir evrimi olduğunu görebilirsiniz. Zaman testini 1 olarak ayarlarsanız, ilkinin yaptığı aynı şeyi yazdırır. 2'ye ayarlarsanız, 2 çarpım tablosunu vb. Yazdırır
Şimdi algo'yu tekrar değiştirin, bu sefer zamana duyarlı değişkeni on kez değiştirmek için bir döngü kullanarak:
'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
Bu şimdi 1'den 10'a kadar çarpım tablolarını yazdıracaktır.
Muhtemelen ilgilenmeniz gereken birkaç biçimlendirme işiniz yoktur. Bu talimatları tam anlamıyla takip ettiyseniz, çıktınız şöyle görünecektir:
12345678910
2468101214161820
Arasına boşluk ekleyebilirsiniz:
1 2 3 4 5 6 7 8 9 10
2 4 6 8 10 12 14 16 18 20
Yine de çok iyi hizalanmamış, değil mi? Biraz mantıkla yapabiliriz çünkü bu biraz basit:
'print out the result of "number" multiplied by "timestable"
Belki bu daha iyi sonuç verir:
'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
Aniden şunu anlıyoruz:
1 2 3 4 5 6 7 8 9 10
2 4 6 8 10 12 14 16 18 20
O zaman, baskı başlıklarına vb. Eklemek için biraz tüyleriniz var.
Herhangi bir kod göndermediğimi fark edeceksiniz, çünkü bu sizin ödeviniz, benim değil. Nasıl yapılacağını biliyorum, ama eğer bunu sizin için yaparsam, bu süreci kendiniz öğrenme fırsatından yoksun kalırsınız. Nihai sonucunuz kesinlikle burada yazdığım yorumlar gibi (sizin anladığınız şekilde algoritma sürümünüz), altında kod bulunan bir sürü yorum içermelidir. Spesifikasyonun gerektirdiği şekilde çalışmasanız bile, kodu ve yorumları teslim etmelisiniz, böylece eğitmen düşüncelerinizin nerede yanlış gittiğini (yorumlardaki algo yanlıştır) veya düşüncenizin doğru olduğunu ancak cevabınız ( yazdığınız kod) yanlıştı. Bu matematik sınavlarında "çalışmanızı göstermek" gibidir
Yanlış döngü türünü kullanmanın bir anlamı yok. Bunu eğitmeninize açıklayın.
Verilerinizi görüntülemek için yanlış denetim türünü kullanmanın da bir anlamı yoktur. A ListBox, listeler içindir. Verileriniz bir listeden çok bir tablo gibidir. A DataGridView, tablo şeklindeki verileri görüntülemek içindir. DataGridViewFormunuza bir ekleyin .
A DataTable, bir tablonun (sütunlar ve satırlar) bellekte temsili olması amaçlanan .Net Framework'teki bir sınıftır. Hafızaya doldurabilir ve ardından verileri görüntülemek için DataSourcea olarak kullanabilirsiniz DataGridView. Bu, siz veri ekledikçe ekranı sürekli olarak değiştirmekten daha etkilidir.
Bu alıştırma, DataTableveritabanı çalışmasına başladığınızda çok yararlı bir araç olan iyi bir giriş olmalıdır .
ForDöngü artışlarla i(ya da değişken adı her neyse) 1 ile varsayılan olarak.
İlk olarak , bir sınıfın bir örneğini oluşturduğumuz için DataTable, sadece Newanahtar kelimeyle diğer değişkenler gibi bir tane oluşturuyoruz. Ardından ihtiyacınız olan sütunları ekleyin. İlk sütun X ve ardından 1'den 10'a kadar sayılardır.
Şimdi verileri (satırları) ekleyin. Her satırın birinci ve ikinci sütunu sadece i. Üçüncü sütun ix 2'dir ve böyle devam eder ..
Son olarak, 'nin DataSourceözelliğini DataGridViewdolu DataTable( dt)' mıza ayarlıyoruz ve güzel görünmesi için biraz düzenliyoruz. Bir .kitap dosyasının görünümünü özelleştirmek için çok sayıda özellik vardır 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
Bu sorunun anahtarı, sayı hesaplamasında ve boşlukların işlenmesinde yatmaktadır. ForSayısal hesaplamalar için iki döngü kullanabilirsiniz .
For x As Integer = 1 To 10
For y As Integer = 1 To 10
Next
Next
Ek olarak, ilk satır nedeniyle ilk sütun benzersizdir. Hesaplanmazlar. Bu yüzden özel muamele yapmalıyız.
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
Alan kullanımı:
Lütfen mevcut sayının boyutunu değerlendirin.
Örneğin:
7 7 14 21 28 ... 98
105112 num (i) mevcut sayıyı, num(i)=(x-1)*y
num (i + 1) ise num (i) 'den sonraki sayıyı temsil eder,num(i+1)=(x-1)*(y+1)
Eğer num(i + 1)<10, onun önünde sayısının ardından 5 boşluklar vardır.
Eğer 10 <num(i + 1)<100, onun önünde sayısının ardından 3 boşluk vardır.
Eğer num(i + 1)> 100, onun önünde sayısının ardından bir boşluk vardır.
Ayrıntılı Kod:
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
Sınıf Sonu
Sonuç: