Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
SunTzu
Anmeldungsdatum: 30.01.2008 Beiträge: 25
|
Verfasst am: 18.02.2008, 18:45 Titel: Aufrunden/Abrunden |
|
|
Hallo,
versuche mich gerade in QBasic einzuarbeiten!
Habe ein kleines Programm geschrieben, welches mir nach einer Berechnung ab oder aufrundet!
Mein Problem ist, dass das Programm zwischen 0 und 1 in ,10 Schritten auf oder abrunden soll.
Das Programm sollte aber die Stationen der viertel Punkte auch in Betracht ziehen.
Beispiel: ----Bedingungen -----
Bei 0.03 rindet er auf 0 ab
Bei 0.05 rundet er auf 0.10 auf
Bei 0.023 soll er nicht abrunden, sondern auf 0.25 aufrunden!
Es ist nur Fraglich ob so ein Befehl Existiert!
Besten Dank
SunTzu |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 18.02.2008, 19:28 Titel: |
|
|
mit einem trick ist das möglich:
Code: |
gerundet = int(zahl + 0.5)
|
was passiert hier genau? nun, INT rundet standardmäßig eine Zahl ab, auch wenn der kommawert >= .5 ist. Wenn du aber 0.5 dazuaddierst, ist solch ein kommawert z.B. nicht mehr 4.6, sondern 5.1, was folgerichtig auf 5 gerundet wird. _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
Keks
Anmeldungsdatum: 03.11.2007 Beiträge: 156 Wohnort: Dose
|
Verfasst am: 18.02.2008, 19:57 Titel: |
|
|
Wenn bei 0.3 auf 0.1, warum dann bei 0.23 auf 0.25? _________________ RUN "brain.exe"
Datei nicht gefunden |
|
Nach oben |
|
 |
SunTzu
Anmeldungsdatum: 30.01.2008 Beiträge: 25
|
Verfasst am: 18.02.2008, 20:32 Titel: |
|
|
Hallo
Habe die Formel gerundet = int (zahl + .5) getestet aber bekomme nur Fehlermeldungen!
Nun da ich weiss wie ich vorgehen muss, werde ich es mit dem if Befehl versuchen!
Praktisch wenn .23 dann .23+.03
Musste doch gehen ? |
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4702 Wohnort: ~/
|
Verfasst am: 18.02.2008, 20:44 Titel: |
|
|
Zitat: | Habe die Formel gerundet = int (zahl + .5) getestet aber bekomme nur Fehlermeldungen! |
Was für welche?
Die Rundung finde ich etwas ungewöhnlich, würde ich aber so machen (Pseudocode):
Wenn Zahl >= 0.225 und < 0.275 dann runde auf 0.25, sonst:
Wenn Zahl >= 0.725 und < 0.775 dann runde auf 0.75, sonst:
Runde normal im 0.1-Schritt: gerundet = int(zahl*10+.5)/10 _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
SunTzu
Anmeldungsdatum: 30.01.2008 Beiträge: 25
|
Verfasst am: 19.02.2008, 10:07 Titel: |
|
|
Hallo
Die Rundung finde ich etwas ungewöhnlich, würde ich aber so machen (Pseudocode):
Wenn Zahl >= 0.225 und < 0.275 dann runde auf 0.25, sonst:
Wenn Zahl >= 0.725 und < 0.775 dann runde auf 0.75, sonst:
Runde normal im 0.1-Schritt: gerundet = int(zahl*10+.5)/10
Ist es Möglich diese Formel quasi auf alle Zahlen anzuwenden ?
Danke für die Auskunft! |
|
Nach oben |
|
 |
SpionAtom
Anmeldungsdatum: 10.01.2005 Beiträge: 395
|
Verfasst am: 19.02.2008, 13:31 Titel: |
|
|
Wer braucht schon IF-Bedingungen, pffff
Sollte mit allen Zahlen funktionieren.
Code: | DECLARE FUNCTION viertelRunden! (z!)
DO
INPUT "Zahl eingeben (-1 = ende) ", z!
PRINT viertelRunden!(z!)
LOOP UNTIL z! = -1
FUNCTION viertelRunden! (z!)
n! = (z! - INT(z!))
viertelRunden! = INT(z!) + INT(n! * 4 + .5) / 4
END FUNCTION
|
_________________ Inzwischen gehöre ich auch zu den BlitzBasicern. Also verzeiht mir, wenn mir mal ein LOCATE 100, 100 oder dergleichen rausrutscht. |
|
Nach oben |
|
 |
dreael Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 2529 Wohnort: Hofen SH (Schweiz)
|
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4702 Wohnort: ~/
|
Verfasst am: 19.02.2008, 17:45 Titel: |
|
|
@SpionAtom: Wenn ich es richtig verstanden habe, soll er auf folgende Zahlen runden:
0.1, 0.2, 0.25, 0.3, 0.4, 0.5, 0.6, 0.7, 0.75, 0.8, 0.9, 1.0 usw. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
SunTzu
Anmeldungsdatum: 30.01.2008 Beiträge: 25
|
Verfasst am: 19.02.2008, 18:01 Titel: |
|
|
Hallo
Richtig erkannt!
Die Schlussfolgerung stimmt!
Es sollte auf alle Zahlen anzuwenden sein, nicht nur zwischen "null" und "eins" ! |
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4702 Wohnort: ~/
|
Verfasst am: 19.02.2008, 19:12 Titel: |
|
|
Für alle Zahlen ist aber kein Problem; du musst nur den Nachkommabereich runden und dann die Vorkommazahl dazuzählen, so wie das SpionAtom schon gemacht hat.
Zahl vor dem Komma: INT(z!)
Nachkommazahl: z! - INT(z!)
gilt zumindest mal für positive Zahlen. Bei negativen ist das anders, aber das sollte beim Runden aufs Gleiche hinauslaufen. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
SunTzu
Anmeldungsdatum: 30.01.2008 Beiträge: 25
|
Verfasst am: 19.02.2008, 19:38 Titel: |
|
|
Danke an alle
Werde alles nochmal überarbeiten
Bis zum nächsten mal  |
|
Nach oben |
|
 |
SunTzu
Anmeldungsdatum: 30.01.2008 Beiträge: 25
|
Verfasst am: 19.02.2008, 20:32 Titel: |
|
|
SunTzu hat Folgendes geschrieben: | Danke an alle
Werde alles nochmal überarbeiten
Bis zum nächsten mal  |
Leider bekomme ich bei der variable viertelRunden eine Fehlermeldung!
"Doppelte Definition  |
|
Nach oben |
|
 |
SpionAtom
Anmeldungsdatum: 10.01.2005 Beiträge: 395
|
Verfasst am: 19.02.2008, 20:34 Titel: |
|
|
nemored hat Folgendes geschrieben: | @SpionAtom: Wenn ich es richtig verstanden habe, soll er auf folgende Zahlen runden:
0.1, 0.2, 0.25, 0.3, 0.4, 0.5, 0.6, 0.7, 0.75, 0.8, 0.9, 1.0 usw. |
Nur so interessehalber, wozu braucht man das? _________________ Inzwischen gehöre ich auch zu den BlitzBasicern. Also verzeiht mir, wenn mir mal ein LOCATE 100, 100 oder dergleichen rausrutscht. |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 19.02.2008, 20:43 Titel: |
|
|
Es ist vor allem so sinnlos...
Wenn es einfach nur in 1/10-Schritten wäre, könnte man das ganze mal 10 nehmen und dann die INT-Methode nehmen. _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4702 Wohnort: ~/
|
Verfasst am: 19.02.2008, 20:50 Titel: |
|
|
SpionAtom hat Folgendes geschrieben: | Nur so interessehalber, wozu braucht man das? |
Genau das habe ich mich auch gefragt.  _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
SunTzu
Anmeldungsdatum: 30.01.2008 Beiträge: 25
|
Verfasst am: 19.02.2008, 20:53 Titel: |
|
|
Okay
Dann werde ich es in 10er Schritten Programmieren, und für den "viertel" mir etwas überlegen!
Ist Blitz Basic besser Entwickelt wie QBasic ?
Danke trotzdem! |
|
Nach oben |
|
 |
SpionAtom
Anmeldungsdatum: 10.01.2005 Beiträge: 395
|
Verfasst am: 20.02.2008, 00:17 Titel: |
|
|
Verwende Blitzbasic, wenn du mehr Geschwindigkeit brauchst, oder viel mit Grafiken hantieren willst. Ansonsten kannst du auch bei QB bleiben. Die Freeware-variante wäre dann Freebasic (wie der Name schon sagt). _________________ Inzwischen gehöre ich auch zu den BlitzBasicern. Also verzeiht mir, wenn mir mal ein LOCATE 100, 100 oder dergleichen rausrutscht. |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 20.02.2008, 10:36 Titel: |
|
|
Die Frage ist völlig falsch gestellt, und so, wie du sie stellst, würde ich sogar sagen, dass QB "besser entwickelt" ist. Aber du meinst wahrschienlich eher "was ist schneller / hat bessere grafikoptionen / blabla", und da würde ich eindeutig FreeBasic bevorzugen. _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
SunTzu
Anmeldungsdatum: 30.01.2008 Beiträge: 25
|
Verfasst am: 21.02.2008, 17:40 Titel: |
|
|
Nein es geht schon um die Strukturierung, nicht die Geschwindigkeit des Programms!
Vielen dank! |
|
Nach oben |
|
 |
|