105255
Jun 09, 2012, updated at Jun 10, 2012 (UTC)
7404
11
0
Visual Basic Fakultät berechnen mit hoher Stellenzahl
Habe von http://www.rhirte.de/vb/ganzzahl.htm ein VB-Programm gefunden mit dem man Fakultät berechnen kann. Allerdings geht es nicht richtig.
Hallo!
Ich habe von
http://www.rhirte.de/vb/ganzzahl.htm
den folgenden Code probiert zu verwenden. Allerdings geht es nicht richtig, da der Code wahrscheinlich veraltet ist:
<code vb>Option Explicit
Dim Zeile As String, n As Long, talt As Long
Private Sub Form_Load() 'Anfangswerte der HScrollBar setzen
n = 100
Label1.Caption = n
End Sub
Private Sub HScroll1_Change() 'HScrollBar auswerten
Text1.Text = "" 'Veränderung löscht Hauptfenster
Label1.Caption = HScroll1.Value
n = HScroll1.Value
End Sub
Private Sub Command1_Click()
Dim i As Long, j As Long, Raus As String
MousePointer = 11
talt = Timer
Me.Caption = "Fakultät von " & N
ProgressBar1.Max = N
Zeile = fak(N)
Text1.Text = N & "! = " & vbCrLf
Raus = ""
j = 0
For i = 1 To Len(Zeile)
j = j + 1
Raus = Raus & Mid(Zeile, i, 1)
If j = 100 Then
Text1.Text = Text1.Text & Raus & vbCrLf
Raus = ""
j = 0
End If
Next
If Raus <> "" Then Text1.Text = Text1.Text & Raus & vbCrLf
Text1.Text = Text1.Text & Len(Zeile) & " Glieder; nach " & Format$(Timer - talt, "##.##") & " s"
MousePointer = 0
End Sub
Private Sub Command2_Click()
End
End Sub
Function fak(ByVal n As Long) As String 'rekursive Fakultätsfunktion.
If n = 1 Then
fak = "1"
Else
fak = mult(n, fak(n - 1))
End If
End Function
(da es nicht so wichtig ist, habe ich es unter OffTopic gesteckt!)
Wie kann ich den Code unter Visual Basic 2010 verwenden?
Gibt es überhaupt eine Möglichkeit, Zahlen mit mehr als 16 Stellen zu rechnen?
Wer kann mir bitte helfen?
Habe schon mindestens 1 1/2 Stunden ge-googelt.
Chris
Ich habe von
http://www.rhirte.de/vb/ganzzahl.htm
den folgenden Code probiert zu verwenden. Allerdings geht es nicht richtig, da der Code wahrscheinlich veraltet ist:
<code vb>Option Explicit
Dim Zeile As String, n As Long, talt As Long
Private Sub Form_Load() 'Anfangswerte der HScrollBar setzen
n = 100
Label1.Caption = n
End Sub
Private Sub HScroll1_Change() 'HScrollBar auswerten
Text1.Text = "" 'Veränderung löscht Hauptfenster
Label1.Caption = HScroll1.Value
n = HScroll1.Value
End Sub
Private Sub Command1_Click()
Dim i As Long, j As Long, Raus As String
MousePointer = 11
talt = Timer
Me.Caption = "Fakultät von " & N
ProgressBar1.Max = N
Zeile = fak(N)
Text1.Text = N & "! = " & vbCrLf
Raus = ""
j = 0
For i = 1 To Len(Zeile)
j = j + 1
Raus = Raus & Mid(Zeile, i, 1)
If j = 100 Then
Text1.Text = Text1.Text & Raus & vbCrLf
Raus = ""
j = 0
End If
Next
If Raus <> "" Then Text1.Text = Text1.Text & Raus & vbCrLf
Text1.Text = Text1.Text & Len(Zeile) & " Glieder; nach " & Format$(Timer - talt, "##.##") & " s"
MousePointer = 0
End Sub
Private Sub Command2_Click()
End
End Sub
Function fak(ByVal n As Long) As String 'rekursive Fakultätsfunktion.
If n = 1 Then
fak = "1"
Else
fak = mult(n, fak(n - 1))
End If
End Function
(da es nicht so wichtig ist, habe ich es unter OffTopic gesteckt!)
Wie kann ich den Code unter Visual Basic 2010 verwenden?
Gibt es überhaupt eine Möglichkeit, Zahlen mit mehr als 16 Stellen zu rechnen?
Wer kann mir bitte helfen?
Habe schon mindestens 1 1/2 Stunden ge-googelt.
Chris
Please also mark the comments that contributed to the solution of the article
Content-Key: 186172
Url: https://administrator.de/contentid/186172
Printed on: April 25, 2024 at 11:04 o'clock
11 Comments
Latest comment
Zitat von @105255:
Seid doch nicht so, ich kann auch nichts dafür, dass
ich das nicht aus beruf mache.
Seid doch nicht so, ich kann auch nichts dafür, dass
ich das nicht aus beruf mache.
Mach ich auch nicht. Ich bin gelernter Technischer Zeichner (entwickeln von Maschinen. Am Schluss für die Teppich Industrie.) Mittlerweile arbeite ich als Administrator und muss Beruflich eigentlich nicht Programmieren hab mir das ganze aber selbst beigebracht.
und ausserdem stimmt an dem code echt was nicht. ich lerne visual basic 2010 und da muss ich nicht die alten sachen auch noch
können.
können.
Du musst die alten Sachen nicht können aber wenn du die Grundlagen könntest könntest du mit dem Code was Anfangen und dir das ganze selbst umschreiben. Übrigens Visual Basic 2010 ist ein Programm! Du lernst VB.NET.
Hier gibt's dann die Unterschiede welches Framework du verwendest. Was aber vom Programmieren keinen Unterschied macht.
wenn du mir nicht helfen willst, dann schreib einfach gar nichts mehr.
du willst bestimmt auch nicht, dass jemand der sich besser auskennt mit irgendwas, weil er das aus beruf macht, dir nicht hilft
und dir sagt, du sollst lernen.
du willst bestimmt auch nicht, dass jemand der sich besser auskennt mit irgendwas, weil er das aus beruf macht, dir nicht hilft
und dir sagt, du sollst lernen.
Das Problem dabei ich will dir ja helfen nur du ignorierst es einfach, und so wie du versucht dich in die Sache einzuarbeiten macht meiner Meinung nach keinen Sinn. Beschäftige dich erst mit den Grundlagen, fall's du da Probleme hast was zu verstehen kannst du gerne Fragen. Vergiss den Schrott mit deinen Videos von Leuten die auch keine Ahnung haben und irgendwelchen Code Schnipseln, die du noch nicht verstehst, aus dem Internet.
Wenn dir das hier jemand aufbereitet siehst du zwar das spezielle Problem "kann" man so lösen aber du weißt immer noch nicht warum und wieso, somit hast du wieder ein Problem sobald die Aufgabe ein klein wenig anders ist. Wenn du aber das warum kennst sollte es ein leichtes sein das ganze abzuändern.
Wenn du eine Fremdsprache lernst musst du auch Vokabeln und Grammatik lernen und kannst nicht einfach so das Reden anfangen.
Also noch einmal, ich mein's nur gut mit dir!
Servus,
aber mal grob ein Buch überfliegen und es durcharbeiten sind schon zwei paar Schuhe!
Es sagt keiner das du mit dem OpenBook der Profi-Programmierer wirst, aber es ist ein Einstieg.
Natürlich muss man um eine (Fremd- oder auch Programmier-)Sprache zu lernen erst mal gewisse Basics lernen. Erst dann kann man anfangen zu lesen, zu sprechen, zu programmieren.
Nur weil ich mal das Wörterbuch Französisch überfliege versteht mich in Paris immer noch keiner.
Natürlich lernt jeder auf seine eigene Art, aber lerne erst mal ein paar Basics, dann verstehst du auch deine Fragen bezüglich Label1.Caption oder auch zum MousePointer. Im OpenBook wird auch an leichten Beispielen das Programmieren geübt, vor allem auch die Objektorientierung.
Es ist auf jeden Fall der falsche Weg komplexere Skripte aus dem Internet zu kopieren, diese dann schlecht in die IDE zu frickeln und dann ein Administrator Forum mit deinen Fehlern voll zu posten in der Hoffnung das dir jemande den Fehler behebt.
Wenn dir die kostenlosen Galileo OpenBooks nicht passen leih dir eins aus der Bibliothek oder kauf dir eins nach deiner Vorstellung, aber lerne erst mal die Basics!!! (OT: Ich werde diese Schallplatte nicht kaufen, sie ist zerkratzt)
Ohne Basics, keine Hilfe! Da ist auch bei ganz anderen Leuten und Themen hier so das den Leuten gesagt wird sie sollen erstmal die Basics lernen oder sich professionelle Hilfe suchen weil es sonst nichts wird.
Gruß
Norbert
aber mal grob ein Buch überfliegen und es durcharbeiten sind schon zwei paar Schuhe!
Es sagt keiner das du mit dem OpenBook der Profi-Programmierer wirst, aber es ist ein Einstieg.
Natürlich muss man um eine (Fremd- oder auch Programmier-)Sprache zu lernen erst mal gewisse Basics lernen. Erst dann kann man anfangen zu lesen, zu sprechen, zu programmieren.
Nur weil ich mal das Wörterbuch Französisch überfliege versteht mich in Paris immer noch keiner.
Natürlich lernt jeder auf seine eigene Art, aber lerne erst mal ein paar Basics, dann verstehst du auch deine Fragen bezüglich Label1.Caption oder auch zum MousePointer. Im OpenBook wird auch an leichten Beispielen das Programmieren geübt, vor allem auch die Objektorientierung.
Es ist auf jeden Fall der falsche Weg komplexere Skripte aus dem Internet zu kopieren, diese dann schlecht in die IDE zu frickeln und dann ein Administrator Forum mit deinen Fehlern voll zu posten in der Hoffnung das dir jemande den Fehler behebt.
Wenn dir die kostenlosen Galileo OpenBooks nicht passen leih dir eins aus der Bibliothek oder kauf dir eins nach deiner Vorstellung, aber lerne erst mal die Basics!!! (OT: Ich werde diese Schallplatte nicht kaufen, sie ist zerkratzt)
Ohne Basics, keine Hilfe! Da ist auch bei ganz anderen Leuten und Themen hier so das den Leuten gesagt wird sie sollen erstmal die Basics lernen oder sich professionelle Hilfe suchen weil es sonst nichts wird.
Gruß
Norbert
Zitat von @105255:
Ich finde, man sollte selber was programmieren und dann durch das Debugging lernen.
Ich finde, man sollte selber was programmieren und dann durch das Debugging lernen.
Ab einen Gewissen Punkt stimmt das sogar. Aber trotzdem brauchst du einfach gewisse Grundlagen, ohne die wir's nie funktionieren.
Zudem gibt's auch noch ein Paar regeln wie du den Code aufbauen solltest damit das ganze sauber ist. Die lernst du erst recht nicht durch's Debuggen.
Wenn du die Grundlagen hättest würde dir auch auffallen das es bei dem Programm um eine simple Schleifenfunktion geht nicht mehr. Aber um das zu erkennen musst du eigentlich "blind" die Schleife im Quelltext erkennen. Und sobald du das hast solltest du eigentlich selbst ein Programm schreiben können das diese Aufgabe kann.
Deshalb immer wieder einige Grundlagen müssen aus dem FF kommen, erst ab diesem Punkt kannst du anfangen Fremde Codes zu analysieren, selbst Aufgaben stellen usw.
Allerdings lernt man von dem, das wenn dir jemand sagt, nein, das spricht man anders aus.
Genauso ist das in der Programmierung: "Fehler, xxx wurde nicht deklariert" - "Ach so".
Genauso ist das in der Programmierung: "Fehler, xxx wurde nicht deklariert" - "Ach so".
Selbst hier musst du erst mal das Wort kennen das du Aussprechen willst (Grundlagen). Dann geht's um Satzbau und Aussprache.
Nochmal hier wird dir liebend gern geholfen. Aber so bringt es im Moment einfach noch nicht's.
In Visual Basic gibt es nunmehr den Datentyp BigInteger (ich glaube, seit VB 2010). Zuerst muss man beim Projekt den Verweis System.Numerics hinzufügen. Dann kann man mit dem VB Programm
Module Module1
Sub Main()
Dim i, n As Integer
n = 1000
For i = 1 To n
Console.Write(CStr(i) & " ")
Console.WriteLine(FakRek(i))
FakRek(1)
Next i
Console.ReadLine()
End Sub
Private Function FakRek(ByVal n As Integer) As System.Numerics.BigInteger
If n < 2 Then Return 1
Return n * FakRek(n - 1)
End Function
End Module
Fakultäten bis 8873! mit allen Stellenanzahlen berechen - hier bis 1000!.
Auf meinem 64-Bit Rechner unter Windows 7 und MS Visual Studio Express 2013 trat erst ab 8874! ein Stack Overflow auf, was vermutlich auf die rekursive Programmierung zurückzuführen ist.
Module Module1
Sub Main()
Dim i, n As Integer
n = 1000
For i = 1 To n
Console.Write(CStr(i) & " ")
Console.WriteLine(FakRek(i))
FakRek(1)
Next i
Console.ReadLine()
End Sub
Private Function FakRek(ByVal n As Integer) As System.Numerics.BigInteger
If n < 2 Then Return 1
Return n * FakRek(n - 1)
End Function
End Module
Fakultäten bis 8873! mit allen Stellenanzahlen berechen - hier bis 1000!.
Auf meinem 64-Bit Rechner unter Windows 7 und MS Visual Studio Express 2013 trat erst ab 8874! ein Stack Overflow auf, was vermutlich auf die rekursive Programmierung zurückzuführen ist.