105255
Goto Top

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

Content-Key: 186172

Url: https://administrator.de/contentid/186172

Printed on: April 25, 2024 at 11:04 o'clock

Member: mrtux
mrtux Jun 09, 2012 updated at 16:51:19 (UTC)
Goto Top
Hi !

Was funktioniert denn "nicht richtig"? Bekommst Du einen Compilerfehler oder läuft der Compiler durch und "dein Programm" lässt die CPU auf 100% Auslastung hoch schnellen? :-P

mrtux
Mitglied: 105255
105255 Jun 09, 2012 updated at 09:02:44 (UTC)
Goto Top
Erstens gibt es kein "Label1.Caption" in Microsoft Visual Basic 2010 Express.
Zweitens gibt es kein MousePointer.
Dazu kommt, das wenn eine Zahl einen bestimmten Wert überschreitet (ich habs auch mit Object versucht), steht immer "+unendlich" da.
Kann man das genauer machen?

Ich habe acht GB Arbeitsspeicher und 300 GB Festplatte und einen Intel Core i3 Prozessor. Es währe mir egal, wenn er lange rechnet, hauptsache die ergebnisse stimmen.


Kannst du den Code evtl. Microsoft Visual Basic 2010 Express-tauglich machen?
Oder kennst du zumindest einen weg, um mehr als 200 Stellen als Lösung auszuspucken, ohne das irgendne Fehlermeldung kommt?

Ich brauchs nicht als Dezimalzahl.

Chris
Member: wiesi200
wiesi200 Jun 09, 2012 at 08:58:51 (UTC)
Goto Top
Hallo,

da du ja die PN's ignorierst, jetzt noch mal so.
Lern erst mal die Grundlagen und dann schau dir sowas an.
Alles andere hat einfach keinen Sinn!
Mitglied: 105255
105255 Jun 09, 2012 at 09:03:23 (UTC)
Goto Top
Zitat von @wiesi200:
Hallo,

da du ja die PN's ignorierst, jetzt noch mal so.

Was für PN´s ?
Member: wiesi200
wiesi200 Jun 09, 2012 at 09:16:19 (UTC)
Goto Top
Das interne Nachrichten System hier.
Aus deine WebCam Frage hat dir Epixc0re und ich eine geschrieben.

Du hast hier einen Code gefunden, verstehst 0 davon willst das dir das einer aufbereitet.
Das ist einfach Schwachsinn! So kommst du selbst nicht weiter, kapier das doch endlich.
Mitglied: 105255
105255 Jun 09, 2012 at 09:37:03 (UTC)
Goto Top
Seid doch nicht so, ich kann auch nichts dafür, dass
ich das nicht aus beruf mache.

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.

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.

Chris
Member: wiesi200
wiesi200 Jun 09, 2012 at 10:00:50 (UTC)
Goto Top
Zitat von @105255:
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.

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.

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!
Mitglied: 105255
105255 Jun 09, 2012 updated at 12:38:53 (UTC)
Goto Top
Zitat von @wiesi200:

Das Problem dabei ich will dir ja helfen nur du ignorierst es einfach,

Danke, es ist nur so:

Ja, ich lerne das Openbook von Galileocomputing schon durch, ich habe es schon mal grob
durchgelesen und immer wenn ich was nicht geschafft habe, habe ich wieder darin rumgestöbert.
Erstens steht da auch nicht alles drin und zweitens glaube ich nicht, das man von solchen Sachen
besonders lernt. Ich finde, man sollte selber was programmieren und dann durch das Debugging lernen.
Ich habe da einfach in manchen Sachen so meine Eigenheiten. Ich bin Asperger Autist und habe ADHS und bin erst ein 13jähriger 7. Klässer, der den ganzen Tag vor dem Laptop sitzt. Ich lerne auf meine Art.


Wenn du eine Fremdsprache lernst musst du auch Vokabeln und Grammatik lernen und kannst nicht einfach so das Reden anfangen.

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".


Chris
Member: MrTrebron
MrTrebron Jun 09, 2012 at 13:11:54 (UTC)
Goto Top
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
Member: wiesi200
wiesi200 Jun 09, 2012 updated at 14:11:53 (UTC)
Goto Top
Zitat von @105255:
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".

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.
Member: Hamberger
Hamberger Jul 28, 2014 at 09:45:37 (UTC)
Goto Top
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.