Zahlen in Brüche umwandeln + ggT

Übersicht BlitzBasic Codearchiv

Neue Antwort erstellen

Triton

Betreff: Zahlen in Brüche umwandeln + ggT

BeitragMi, Okt 12, 2005 16:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Dieser Code kann eine beliebige Dezimalzahl in einen Bruch umwandeln und ihn maximal kürzen. Aus 13,125 werden 105/8.

Wer ne Funktion sucht, um den ggT (größter gemeinsamer Teiler) zu finden, wird hier auch fündig.

Code: [AUSKLAPPEN]
;*** Wandelt Dezimalzahlen in Brüche um
;*** 9.10.2005 by Triton
;*** http://www.silizium-net.de

Graphics 640,480,16,2
zahl$= Input("Zahl:")
Print "Diese Zahl als Bruch: "+dez2bruch$(zahl$)

WaitKey
End

;---
Function dez2bruch$(zahl$)

If zahl$="0" Then Return "0"
If Int(zahl$) < 0 Then
   n=1
   zahl$=Right(zahl$, Len(zahl$)-1)
End If

For a1 = 1 To Len(zahl)
   nr$ = Mid(zahl$,a1,1)
   b=b+1
   If Not nr$="," Then zaehler1$=zaehler1$+Mid(zahl$,a1,1)
   If nr$="," Then c=b
Next
If c <= Len(zaehler1$) Then nenner1$="1"+String$("0",Len(zaehler1$)-c+1)
If c = 0 Then nenner1$="1"

zaehler2$=Str(Int(zaehler1$)/ggT(Int(zaehler1$),Int(nenner1$)))
nenner2$=Str(Int(nenner1$)/ggT(Int(zaehler1$),Int(nenner1$)))
If n=0 Then  bruch$=zaehler2$+"/"+nenner2$
If n=1 Then  bruch$="-"+zaehler2$+"/"+nenner2$

Return bruch$
End Function


;---
Function ggT(zahl1,zahl2)

If zahl1 > zahl2 Then b=zahl2
If zahl2 > zahl1 Then b=zahl1
If zahl1 = zahl2 Then b=zahl1
For a = b To 1 Step -1
   If zahl1 Mod a = 0 And zahl2 Mod a = 0 Then Return a
Next

End Function
Coding: silizium-net.de | Portfolio: Triton.ch.vu

Hummelpups

BeitragMi, Okt 12, 2005 23:56
Antworten mit Zitat
Benutzer-Profile anzeigen
schick schick.

Brauche es nicht unbedingt, arbeite lieber mit Dezimalen
Zahlen Wink

IMurDOOM
blucode - webdesign - Ressource - NetzwerkSim
BlitzBasic 2D - BlitzMax - MaxGUI - Monkey - BlitzPlus
 

$tankY

BeitragDo, Okt 13, 2005 21:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Laughing Nice Nice Laughing
Da kann man doch was mit Mathe machen ...

Terror-State

BeitragDi, Nov 22, 2005 14:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Mein Vorschlaf für den ggT:

Code: [AUSKLAPPEN]

a = 15
b = 12

Repeat
  If a < b Then
   h=a
   a=b
   b=h      
  EndIf
 a = a - b   
Until a = 0
Print "ggT: "+b


is glaub ichn bissel schneller ^^
Ob friedlich oder militant, wichtig ist der Widerstand

Triton

BeitragDi, Nov 22, 2005 17:36
Antworten mit Zitat
Benutzer-Profile anzeigen
In der Tat. Nicht schlecht.
Coding: silizium-net.de | Portfolio: Triton.ch.vu

Terror-State

BeitragDi, Nov 22, 2005 20:34
Antworten mit Zitat
Benutzer-Profile anzeigen
is nur dumm wenn eine zahl sehr groß ist und die andere nur 1 oder 2... dann dauerts schon mal ein wenig!
Ob friedlich oder militant, wichtig ist der Widerstand

Neue Antwort erstellen


Übersicht BlitzBasic Codearchiv

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group