Brüche Rechnen in BB?

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

bruce85

Betreff: Brüche Rechnen in BB?

BeitragDo, Aug 31, 2006 20:46
Antworten mit Zitat
Benutzer-Profile anzeigen
hallo,
ich wollte ein Matheprogramm in BB schreiben, und wollte euch mal fragen ob man in BB Brüche berechnen kann?
wenn ja, wie macht man das?

Danke euch schonmal Wink

Gruss Andreas

Hagbard

BeitragDo, Aug 31, 2006 20:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,
das ist doch ganz einfach oder?

2/4 bedeutet doch einfach nur 2:4!
 

bruce85

BeitragDo, Aug 31, 2006 20:59
Antworten mit Zitat
Benutzer-Profile anzeigen
danke dir, ich hab des aber anders gemeint, z.B. 8/4 + 4/2 = das ich das ergebnis dann da schreibe, das wäre dann die lösung: 4 Ganze
nur wie berechnet man das wenn man z.B. noch kürzen kann u.s.w.?

Gruss Andreas
 

Mr Hopp

BeitragDo, Aug 31, 2006 21:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Naja, ein bisschen aufwendig wird's schon^^

z.B. der Wert 0,80....

Dann würde ich erstmal eine Variable=80 und eine Variable=100 machen, dann alle gemeinsamen Teiler ermitteln und nachrechnen^^ Ist der GGT gefunden, kann man dann ja ganz einfach

Code: [AUSKLAPPEN]

Variable1=Variable1/ggt
Variable2=Variable2/ggt


rechnen

das ergibt im Falle von ggt=20 4/5[/code]

Cardonic

BeitragDo, Aug 31, 2006 23:03
Antworten mit Zitat
Benutzer-Profile anzeigen
@Bruce85: Vielleicht hilft dir das hier weiter:
Code: [AUSKLAPPEN]
; Bruch A
zahler_a = 5
nenner_a = 2

; Bruch B
zahler_b = 3
nenner_b = 4

; Rechnung anzeigen
Print zahler_a+"/"+nenner_a+" + "+zahler_b+"/"+nenner_b

; Brüche gleichnamig machen und addieren
zahler_c = zahler_a*nenner_b + zahler_b*nenner_a
nenner_c = nenner_a*nenner_b

; Ungekürztes Ergebnis anzeigen
Print zahler_c+"/"+nenner_c

; Kürzen (kann man bestimmt noch optimieren)
If zahler_c > nenner_c Then
   n = zahler_c
Else
   n = nenner_c
EndIf

While n > 1
   If (zahler_c Mod n) = 0 And (nenner_c Mod n) = 0 Then
      zahler_c = zahler_c / n
      nenner_c = nenner_c / n
   EndIf
   n = n - 1
Wend

; Ergebnis anzeigen
Print zahler_c+"/"+nenner_c


mfg Cardonic

~Edit~
Habe dem Code noch ein paar Kommentare hinzugefügt
 

bruce85

BeitragFr, Sep 01, 2006 0:24
Antworten mit Zitat
Benutzer-Profile anzeigen
danke dir,
aber was mache ich wenn der Zähler grösser ist als der Nenner?
z.B. 23/5 dann wäre 4 3/5 das ergebnis.

Danke dir schonmal Wink

Gruss Andreas
 

bruce85

BeitragFr, Sep 01, 2006 1:19
Antworten mit Zitat
Benutzer-Profile anzeigen
also ich hab es folgendermaßen gelößt:

Code: [AUSKLAPPEN]
If zahler_c > nenner_c Then
    ;um die Ganzen anzuzeigen, muss man den Zähler durch den nenner teilen
    Ganze = zahler_c / nenner_c
    ;zähler_c den zähler_d zuweisen
    nenner_d = nenner_c
    ;jetzt wird die ganzen * den nenner_c berechnen
    ;und dann die Variable temp zuweisen
    temp = Ganze * nenner_c
    ;und jetzt den zähler minus temp rechnen und zähler_d zuweisen
    ;und jetzt hat man den rest der brüche
    zahler_d = zahler_c - temp
    If Not zahler_d = 0 Then
      Text 190,60,"="
      Text 206,60,Ganze
      Text 224,50,zahler_d
      Rect 224,69,18,2
      Text 224,70,nenner_d
    Else
      Text 190,60,"="
      Text 206,60,Ganze
    EndIf
  EndIf


und danke dir Very Happy

edit: ich stells mal hier rein, habs ein bissel überarbeitet:

Code: [AUSKLAPPEN]
Graphics 640,480,16,2
SetBuffer BackBuffer()

Global schrift1 = LoadFont("Comic Sans MS",20,1,0,0)
SetFont schrift1

SeedRnd MilliSecs()
; Bruch A
Global zahler_a = Rnd(1,10)
Global nenner_a = Rnd(1,10)

; Bruch B
Global zahler_b = Rnd(1,10)
Global nenner_b = Rnd(1,10)

Global Ganze

Repeat
  ClsColor 127,127,127
  Cls

  Color 0,0,128
  ; Rechnung anzeigen
  Text 50,50,zahler_a
  Rect 50,69,10,2
  Text 50,70,nenner_a
  Text 72,60,"+"
  Text 92,50,zahler_b
  Rect 91,69,10,2
  Text 92,70,nenner_b
  Text 110,60,"="

  ; Brüche gleichnamig machen und addieren
  zahler_c = zahler_a*nenner_b + zahler_b*nenner_a
  nenner_c = nenner_a*nenner_b

  ; Ungekürztes Ergebnis anzeigen
  Text 126,50,zahler_c
  Rect 126,69,18,2
  Text 126,70,nenner_c
  Text 152,60,"="

  ; Kürzen (kann man bestimmt noch optimieren)
  If zahler_c > nenner_c Then
    n = zahler_c
  Else
    n = nenner_c
  EndIf

  While n > 1
    If (zahler_c Mod n) = 0 And (nenner_c Mod n) = 0 Then
      zahler_c = zahler_c / n
      nenner_c = nenner_c / n
    EndIf
    n = n - 1
  Wend

  ; Ergebnis anzeigen
  Text 164,50,zahler_c
  Rect 164,69,18,2
  Text 165,70,nenner_c

  If zahler_c > nenner_c Then
    ;um die Ganzen anzuzeigen, muss man den Zähler durch den nenner teilen
    Ganze = zahler_c / nenner_c
    ;zähler_c den zähler_d zuweisen
    nenner_d = nenner_c
    ;jetzt wird die ganzen * den nenner_c berechnen
    ;und dann die Variable temp zuweisen
    temp = Ganze * nenner_c
    ;und jetzt den zähler minus temp rechnen und zähler_d zuweisen
    ;und jetzt hat man den rest der brüche
    zahler_d = zahler_c - temp
    If Not zahler_d = 0 Then
      Text 190,60,"="
      Text 206,60,Ganze
      Text 224,50,zahler_d
      Rect 224,69,18,2
      Text 224,70,nenner_d
    Else
      Text 190,60,"="
      Text 206,60,Ganze
    EndIf
  EndIf

  Flip
Until KeyHit(1)

End


Gruss Andreas

Cardonic

BeitragFr, Sep 01, 2006 7:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Das sieht ja schon mal ganz gut aus.

Für die Subtraktion musst du eigentlich nur das plus (+) durch ein minus (-) ersetzen.
Multiplikationen und Divisionen sollten eigentlich keine Probleme darstellen, da hier die Brüche nicht gleichnamig gemacht werden müssen.

Ich würde für jede der Operationen eine eigene Funktion schreiben. Das kürzen der Brüche würde ich in eine eigene Funktion schreiben und diese dann am ende jeder "Operation-Funktion" aufrufen.

Ich hoffe, du kannst verstehen, was ich versucht habe zu erklären.

mfg Cardonic
If you should go skating on the thin ice of modern life, dragging behind you the silent reproach of a million tear-stained eyes, don't be surprised when a crack in the ice appears under your feet.
 

bruce85

BeitragFr, Sep 01, 2006 11:03
Antworten mit Zitat
Benutzer-Profile anzeigen
ich danke dir Very Happy

ich weiss das man bei Multiplikation und Division den Nenner nicht Gleichnamig machen soll, ich weiss ja wie man das dann berechnen muss Wink
Ich werde das dann alles in Funktionen Packen, weil es ja dann übersichtlicher wird.

Gruss Andreas

Triton

BeitragFr, Sep 01, 2006 16:27
Antworten mit Zitat
Benutzer-Profile anzeigen
https://www.blitzforum.de/viewtopic.php?t=12531 - Bruchrechnen I - Artemis
https://www.blitzforum.de/viewtopic.php?t=14337 - Bruchrechnen II - Triton
Coding: silizium-net.de | Portfolio: Triton.ch.vu

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group