Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder einen alternativen Browser verwenden.
VisualBasicJeder Ziffer eine Zahl aus einer Textdatei in ein Array speichern
Guten Morgen allen zusammen,
wir haben in der Schule die Aufgabe bekommen die Euler'sche Zahl möglichst genau zu berechnen und auf Kommando eine Ziffer dieser Zahl ausgeben zu können.
Ich habe es schon geschafft e auf 216236 Stellen genau zu berechnen. Die Zahl steh jetzt in einer Textdatei. Um auf jede Ziffer zugreifen zu können (möglichst schnell), will ich die Zahl mit ihren Ziffern in ein Array speichern.
Doch leider habe ich keine Ahnung, wie man das am besten anstellt.
Was ich auf die schnelle gefunden hab ist, dass man Datein in VB als String einliest.
Dann sollte es Stringoperationen geben, die teile des String wieder geben.
Also den eingelesenen String mittels Schleife, Ziffer für Ziffer, in dein Array schreiben.
Ich bin zwar kein Experte in VB, aber ich denke, dass ein Array dafür nicht geeignet ist. Grund ist einfach, dass ein Array vermutlich zu unperform ist. Was der Antworter über mir anspricht ist die Möglichkeit Dateien auszulesen und die Strings zu splitten. Das ist sinnvoll, wenn man zum Beispiel Anweisungen für das Programm in Dateien speichern will. Aber nicht für dich sinnvoll. Ich suche mal für dich nach einer Lösung^^ P.S. VB-Fragen sind besser hier aufgehoben: http://www.vb-paradise.de/ LG
Edit: Frage falsch verstanden xD Naja. Also so wie ich das verstanden habe, willst du die Datei auslesen. Ich schreibe jetzt mal einen kleinen Code, um die Datei auszulesen und auf jede Ziffer zu greifen zu können.
Import System.IO
Sub auslesen()
Dim reader as Streamreader = New Streamreader(Dateipfad)
Dim Text as String
Dim Zahl as Integer
Text = reader.Readline() 'Ich schätze mal die Zahl ist in der ersten Reihe
Zahl = Convert.ToInt32(Text)
End Sub
'Um auf alle Ziffern zu zugreifen:
'Beispiel du willst auf Ziffer 563 zugreifen
Dim Länge as Integer = Zahl.Length - 1
Dim Ziffer As Integer
Dim Zielziffer as Integer = 563
Ziffer = Länge - (Länge - Zielziffer)
Label1.Text = Ziffer
"Path" musst du durch den Dateipfad ersetzen. Entweder reinschreiben oder über ne Variable lösen. Dann erstellst du eine globale Variable, für den String(Z.B. Zahl). Also zwischen Subs/Funktionen. Dann geb ich dir mal zwei Möglichkeiten. Erstens: Die Zahl steht in einer Reihe, dann musst du einfach nur schreiben:
So und nun zu meinem Kernfehler. Der Ausgabe einer bestimmten Stelle. Also du kannst bestimmte Stellen so ausgeben:
Dim Länge as Integer = Zahl.Length - 1
Dim Ziffer as Integer
Dim Zielziffer as Integer = 30 'Zum Beispiel
Ziffer = Convert.ToInt32(Zahl.ElementAt((Länge - ( Zahl.Length - Zielziffer)))
Messagebox.Show(Ziffer)
So jetzt etwas Erklärung: Zunächst erstelle ich Länge. Länge ist deshalb um 1 kleiner als "Zahl.Lenght", da VB Nullbasiert ist. Sprich hat ein Array 5 Items, kann man sie nur mit 0-4 abrufen(0,1,2,3,4). Dann wird der Punkt ausgewählt, an dem die Zahl entnommen werden soll(Sprich hier Stelle 30). Dann wird nur noch Ziffer ein Wert zugewiesen, der die Zahl enthält. Ich denke die Rechnung ist verständlich. Falls du ganze Ausschnitte von deiner Zahl abgeben willst, dann würde ich das in eine Schleife packen, und Ziffer dann nicht als Integer, sondern als String deklarieren. Dann kannste die Konvertierung weglassen, noch ne Variable Ausschnitt als String deklarieren und schreiben:
Dann werden die Werte nicht addiert(Sprich 1+1 = 2), sondern Ziffer wird nur angefügt(Sprich 1 & 1 = 11).
Bitte beachte, dass das Komma so auch ausgegeben wird, was zu Rechenfehlern im weiteren Verlauf führen kann.
So ich habe das jetzt so geschrieben, dass es jeder verstehen sollte. LG ChOoSe
Sag mal, warum wollt ihr denn überhaupt den eingelesenen String zu Integer konvertieren? Ich kann kein VB aber von dem was ich gelesen hab, funktionieren Strings dort ganz normal wie auch anderswo, d.h. ein String ist quasi ein Array of char.