QBasic rechnet falsch

Hallo

ein kleiner Nachtrag.
Wenn das so nicht funktioniert, dann werde ich das anders machen.
Es ist eigentlich bekloppt, verrückt.

Ich werde nur mit GANZZAHLEN rechnen (auch hinter dem Komma).

Ich glaube, das geht.
Beispiel:
12.70 plus 7.80

Vor dem Komma sind Ganzzahlen, dahinter auch.
12 plus 7 = 19
70 plus 80 = 150
Der höchste Wert, der hinter dem Komma sein kann ist 99
Z.B. 1.99 Euro.
Wird der Wert 99 überschritten dann bekommt die Zahl vor dem Komma
1 zugezählt.
Hinter dem Komma wird 100 runtergezählt.
Im obigen Beispiel wären das:
12 + 7 = 19
80 + 70 = 150
Wert ist grösser als 99 also 12 + 7 + 1 = 20
Hinter dem Komma:
150 - 100 = 50
Gesamtwert: 20.50 Euro

Ich weiss, das ist plemplem.
Wenn irgendetwas nicht funktioniert, reizt es mich halt,
doch eine Lösung (einen Weg) zu finden.
Erst wenn nachweislich dieser Weg nicht funktioniert, dann
versuche ich es auf eine andere Art.

Meine Einstellung:
Gibt man zu schnell auf, weiss man nie, ob eine bestimmte Sache
(die man für unmöglich hält), doch funktioniert.
Das ist ja der ganze Reiz.

Gruss
Klaus

Hallo,

Ich werde nur mit GANZZAHLEN rechnen (auch hinter dem Komma).

Ich finde, du machst es die zu kompliziert.
einfacher geht es so:

  1. bestimmen, welche Zahl mehr Nachkommastellen hat (das musst du bei deiner Lösung auch machen)
  2. beide Zahlen mit 10^(Anzahl der Nachkommastellen) multiplizierien
  3. Jetzt hast du Ganzzahlen (oder kansst zumindest auf welche runden), die kannst du einfach addieren
  4. vergiss nicht, bei der Ausgabe das Komma richtig zu setzen.

Ich glaube, das geht.
Beispiel:
12.70 plus 7.80

Vor dem Komma sind Ganzzahlen, dahinter auch.
12 plus 7 = 19
70 plus 80 = 150
Der höchste Wert, der hinter dem Komma sein kann ist 99
Z.B. 1.99 Euro.
Wird der Wert 99 überschritten dann bekommt die Zahl vor dem
Komma
1 zugezählt.
Hinter dem Komma wird 100 runtergezählt.
Im obigen Beispiel wären das:
12 + 7 = 19
80 + 70 = 150
Wert ist grösser als 99 also 12 + 7 + 1 = 20
Hinter dem Komma:
150 - 100 = 50
Gesamtwert: 20.50 Euro

Ich weiss, das ist plemplem.

Das ist eine von-Hand-Implementierung von Festkommazahlen. Nimm doch einfach eine Programmiersprache, die so einen Typ schon hat… :wink:

Meine Einstellung:
Gibt man zu schnell auf, weiss man nie, ob eine bestimmte
Sache
(die man für unmöglich hält), doch funktioniert.
Das ist ja der ganze Reiz.

Wenn man genug Zeit dazu hat, ist das sehr lehrreich.

Grüße,
Moritz

Hallo Klaus,

Wie Klaus schon schreibt:
Rechne einfach in Cents, nicht in Euros, dann hast du immer Beträge in Ganzahlen.

Ich habe das Problem recht häuffig bei MicroController anwendungen. Die haben keine Fliesskomma-Enheit und die Fliesskomma-Emulation braucht Speicherplatz und ist langsam.
Also rechnet man halt intern mit 1/100mm oder mit 1/10tel Grad. Ich habe auch Software welche intern mit 1/40tel Einheiten rechnet, weil die Daten intern so anfallen.
Bei der Ausgabe wird dann einfach umskaliert und an der entsprechenden Position, ein Komma „drangefummelt“ :wink:

MfG Peter(TOO)

Hallo!

Ich schlage vor, Du rundest nach jeder Addition das Ergebnis auf 2 Nachkommastellen. Dann brauchst Du keine Purzelbäume schlagen und zweifelhaften Code produzieren und das Problem ist aus der Welt.

Ein Beispiel für eine QBasic-Rundungasfuntkion findest Du unter:

http://faq.qbasicnews.com/?blast=RoundingNumbers

Grüße Safog

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo Klaus,

wenn Du dich nicht mit so Kleinigkeiten rumärgern willst dann nimm doch einen anderen Basic Dialekt. Ich kann dir http://www.powerbasic.com/ bzw. http://www.powerbasic.de/ nur wärmstens empfehlen. Gibts für DOS und Windows. Powerbasic stellt nämlich BCD Festkomma und BCD Fliesskomma Variablen zur Verfügung. Damit ist der ganze Rundungsmist den dir QBasic bereitet vorbei.

Viele Grüße

Stefan

Ich habe, glaube ich, auf meinem alten Computer noch
ein DOS-Powerbasic.
Wie ist denn das Powerbasic für Win?
Ich suche eine einfach zu handhabende Programmiersprache,
ähnlich wie z.B. PHP.
Ich kenne das nicht anders.
Ich bin es gewohnt (aus C64-Zeiten), jede Zeile per Hand
einzutippen.
Ich möchte für mich ja nur ab und zu ein paar kleine Hilfsprogramme
coden.
Programmiersprachen, die aus ein paar Zeilen Code danach eine
50 oder 100MB Datei erzeugen, sind in meinen Augen auch nicht
gerade das gelbe vom Ei.

Das ist vielleicht noch ein Überblebsel vom C64.
Da musste man nämlich mit jedes Byte geizen.

Klaus

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hi!

Ich habe, glaube ich, auf meinem alten Computer noch
ein DOS-Powerbasic.

Welche Version denn?

Wie ist denn das Powerbasic für Win?

Das habe ich nicht ausprobiert, ich habe schon seit 2 Jahren keine Programme mehr geschrieben.

Programmiersprachen, die aus ein paar Zeilen Code danach eine
50 oder 100MB Datei erzeugen, sind in meinen Augen auch nicht
gerade das gelbe vom Ei.

Da bist Du mit PowerBasic für DOS gut bedient. PB erzeugt übrigens ausführbare Dateien.

Das ist vielleicht noch ein Überblebsel vom C64.
Da musste man nämlich mit jedes Byte geizen.

War das nicht die Hauptursache für das eine oder andere Jahr-2000 Problem?

Gruß

Stefan

Hi!

Ich habe, glaube ich, auf meinem alten Computer noch
ein DOS-Powerbasic.

Welche Version denn?

Ich glaube 2.0 (und ein Referenzbuch).

Noch eine Frage.
Kennst Du Pure Basic?

Habe ich mir damals gekauft.
Zuerst waren da ein paar kleine Games (Pacmanverschnitt).
Das habe ich getestet. Nach einiger Zeit hing da
die Spielfigur immer fest.

Dann habe ich ein Fenster mit etwas Text gecodet.
Zusätzlich eine Message Box.
Als ich mit dem Mauszeiger die Messagebox bewegte, konnte
ich diese als Radiergummi verwenden.
Ich konnte das darunterliegende Fenster komplett wegradieren.

War noch nicht alles.
Als ich das Fenster aus dem Bildschirmrand zog, war das auch
wegradiert.
Man hatte dann nur noch ein halbes Fenster.

Ich weiss nicht, ob ich als Anfänger was falsch gemacht habe.
Das darf aber so nicht sein, oder?

Zuerst die Spiele, die nicht funktionierten, dann der Radiergummi.
War für mich ein Grund, mich mit Pure Basic nicht weiter
zu befassen.
Einfache Programmiersprachen finde ich deshalb gut,
weil

  1. eine Exe sehr klein ist
  2. weil fast überall laufen.

Klaus