Multiplikationsdiagramm
Ich versuche, ein Multiplikationsdiagramm wie das auf dem Bild zu erstellen. Ich bin ziemlich neu in der Codierung und habe keine Ahnung, wo ich überhaupt anfangen soll. Ich habe der Ausgabe, die ich bisher habe, ein Bild sowie den folgenden Code beigefügt. Jede Hilfe wäre dankbar.
Ausgabe bekomme ich
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
Antworten
Starten Sie stückweise und bauen Sie es auf. Hier ist der Algorithmus für eine Schleife, die eine Zählung von 1 bis 10 ausgibt
'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
Hier ist ein Algorithmus, der eine Zeittabelle druckt:
'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
Hoffentlich können Sie sehen, dass dies nur eine kleine Weiterentwicklung des ersten Algo ist. Wenn Sie den Zeitstempel auf 1 setzen, wird das gleiche gedruckt wie beim ersten Mal. Sie setzen es auf 2, es druckt die 2-fache Tabelle usw.
Ändern Sie nun das Algo erneut, diesmal mithilfe einer Schleife, um die zeitstabable Variable zehnmal zu ändern:
'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
Dadurch werden jetzt die Stundenpläne von 1 bis 10 ausgedruckt
Sie müssen wahrscheinlich nicht nur ein paar Formatierungsaufgaben erledigen. Wenn Sie diese Anweisungen buchstäblich befolgt haben, sieht Ihre Ausgabe folgendermaßen aus:
12345678910
2468101214161820
Sie können ein Leerzeichen hinzufügen zwischen:
1 2 3 4 5 6 7 8 9 10
2 4 6 8 10 12 14 16 18 20
Immer noch nicht sehr gut ausgerichtet, oder? Wir könnten etwas Logik gebrauchen, weil dies ein bisschen simpel ist:
'print out the result of "number" multiplied by "timestable"
Vielleicht würde das besser funktionieren:
'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
Plötzlich bekommen wir:
1 2 3 4 5 6 7 8 9 10
2 4 6 8 10 12 14 16 18 20
Dann müssen Sie nur noch einige Flusen um die Druckkopfzeilen usw. hinzufügen.
Sie werden feststellen, dass ich keinen Code gepostet habe, da dies Ihre Hausaufgabe ist, nicht meine. Ich weiß, wie es geht, aber wenn ich es für Sie mache, wird Ihnen die Möglichkeit genommen, diesen Prozess selbst zu lernen. Ihr Endergebnis sollte unbedingt eine Reihe von Kommentaren enthalten, wie die Kommentare, die ich hier geschrieben habe (Ihre Version des Algorithmus, wie Sie ihn verstehen), mit Code darunter. Selbst wenn Sie es nie zum Laufen bringen, wie es die Spezifikation verlangt, sollten Sie den Code und die Kommentare einreichen, damit der Kursleiter sehen kann, wo Ihr Denken falsch war (das Algo in den Kommentaren ist falsch) oder wo Ihr Denken richtig war, aber Ihre Antwort (das Code, den Sie geschrieben haben) war falsch. Dies ist wie "Zeigen Sie Ihr Training" in Matheprüfungen
Es macht keinen Sinn, den falschen Schleifentyp zu verwenden. Erklären Sie dies Ihrem Ausbilder.
Es macht auch keinen Sinn, die falsche Art der Steuerung zum Anzeigen Ihrer Daten zu verwenden. A ListBoxsteht für Listen. Ihre Daten ähneln eher einer Tabelle als einer Liste. A DataGridViewsoll tabellarische Daten anzeigen. Fügen Sie DataGridViewIhrem Formular ein hinzu.
A DataTableist eine Klasse im .Net Framework, die als In-Memory-Darstellung einer Tabelle (Spalten und Zeilen) gedacht ist. Sie können es in den Speicher füllen und dann als DataSourcevon a verwenden DataGridView, um die Daten anzuzeigen. Dies ist effizienter, als die Anzeige beim Hinzufügen von Daten ständig zu ändern.
Diese Übung sollte eine gute Einführung sein, DataTabledie ein sehr nützliches Werkzeug ist, wenn Sie mit der Datenbankarbeit beginnen.
Die ForSchleife iwird standardmäßig um 1 erhöht (oder wie auch immer Sie Ihre Variable benennen).
Zuerst erstellen wir eine DataTableVariable wie jede andere Variable nur mit dem NewSchlüsselwort, da wir eine Instanz einer Klasse erstellen. Fügen Sie als Nächstes die gewünschten Spalten hinzu. Die erste Spalte ist X und dann die Zahlen 1 bis 10.
Fügen Sie nun die Daten (die Zeilen) hinzu. Die erste und zweite Spalte jeder Zeile ist gerecht i. Die dritte Spalte ist ix 2 und so weiter.
Zuletzt setzen wir die DataSourceEigenschaft von DataGridViewauf unsere gefüllte DataTable( dt) und räumen ein wenig auf, damit es schön aussieht. Es gibt eine Reihe von Eigenschaften, mit denen Sie das Erscheinungsbild von a anpassen können 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
Der Schlüssel zu diesem Problem liegt in der Zahlenberechnung und dem Umgang mit Leerzeichen. Sie können zwei ForSchleifen für numerische Berechnungen verwenden.
For x As Integer = 1 To 10
For y As Integer = 1 To 10
Next
Next
Aufgrund der ersten Zeile ist die erste Spalte außerdem eindeutig. Sie werden nicht berechnet. Wir müssen also eine Sonderbehandlung durchführen.
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
Platzhandhabung:
Bitte beurteilen Sie die Größe der aktuellen Nummer.
Beispiel:
7 7 14 21 28 ... 98 105 112
num (i) steht für die aktuelle Zahl, num(i)=(x-1)*y
num (i + 1) steht für die Zahl nach num (i),num(i+1)=(x-1)*(y+1)
Wenn num(i + 1)<10, gibt es 5 Leerzeichen nach der Nummer davor.
Wenn 10 <num(i + 1)<100, gibt es 3 Leerzeichen nach der Nummer davor.
Wenn num(i + 1)> 100, steht nach der Nummer ein Leerzeichen davor.
Detaillierter Code:
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
Klasse beenden
Ergebnis: