Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Aufrunden/Abrunden
Gehe zu Seite 1, 2  Weiter
 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu QBasic.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
SunTzu



Anmeldungsdatum: 30.01.2008
Beiträge: 25

BeitragVerfasst am: 18.02.2008, 18:45    Titel: Aufrunden/Abrunden Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 18.02.2008, 19:28    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Keks



Anmeldungsdatum: 03.11.2007
Beiträge: 156
Wohnort: Dose

BeitragVerfasst am: 18.02.2008, 19:57    Titel: Antworten mit Zitat

Wenn bei 0.3 auf 0.1, warum dann bei 0.23 auf 0.25?
_________________
RUN "brain.exe"
Datei nicht gefunden
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
SunTzu



Anmeldungsdatum: 30.01.2008
Beiträge: 25

BeitragVerfasst am: 18.02.2008, 20:32    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4702
Wohnort: ~/

BeitragVerfasst am: 18.02.2008, 20:44    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
SunTzu



Anmeldungsdatum: 30.01.2008
Beiträge: 25

BeitragVerfasst am: 19.02.2008, 10:07    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
SpionAtom



Anmeldungsdatum: 10.01.2005
Beiträge: 395

BeitragVerfasst am: 19.02.2008, 13:31    Titel: Antworten mit Zitat

Wer braucht schon IF-Bedingungen, pffff zwinkern
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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
dreael
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 2529
Wohnort: Hofen SH (Schweiz)

BeitragVerfasst am: 19.02.2008, 16:01    Titel: Antworten mit Zitat

Zum Thema noch ein längerer Artikel:

http://www.dreael.ch/Deutsch/BASIC-Knowhow-Ecke/Gleitkommazahlen.html

Erläutert eigentlich so ziemlich alle Aspekte vom Titelthema.
_________________
Teste die PC-Sicherheit mit www.sec-check.net
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4702
Wohnort: ~/

BeitragVerfasst am: 19.02.2008, 17:45    Titel: Antworten mit Zitat

@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
Benutzer-Profile anzeigen Private Nachricht senden
SunTzu



Anmeldungsdatum: 30.01.2008
Beiträge: 25

BeitragVerfasst am: 19.02.2008, 18:01    Titel: Antworten mit Zitat

Hallo

Richtig erkannt!
Die Schlussfolgerung stimmt!

Es sollte auf alle Zahlen anzuwenden sein, nicht nur zwischen "null" und "eins" !
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4702
Wohnort: ~/

BeitragVerfasst am: 19.02.2008, 19:12    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
SunTzu



Anmeldungsdatum: 30.01.2008
Beiträge: 25

BeitragVerfasst am: 19.02.2008, 19:38    Titel: Antworten mit Zitat

Danke an alle
Werde alles nochmal überarbeiten happy

Bis zum nächsten mal zwinkern
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
SunTzu



Anmeldungsdatum: 30.01.2008
Beiträge: 25

BeitragVerfasst am: 19.02.2008, 20:32    Titel: Antworten mit Zitat

SunTzu hat Folgendes geschrieben:
Danke an alle
Werde alles nochmal überarbeiten happy

Bis zum nächsten mal zwinkern


Leider bekomme ich bei der variable viertelRunden eine Fehlermeldung!
"Doppelte Definition geschockt
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
SpionAtom



Anmeldungsdatum: 10.01.2005
Beiträge: 395

BeitragVerfasst am: 19.02.2008, 20:34    Titel: Antworten mit Zitat

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.
mit dem Kopf durch die Mauer wollen peinlich weinen missbilligen



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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 19.02.2008, 20:43    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4702
Wohnort: ~/

BeitragVerfasst am: 19.02.2008, 20:50    Titel: Antworten mit Zitat

SpionAtom hat Folgendes geschrieben:
Nur so interessehalber, wozu braucht man das?

Genau das habe ich mich auch gefragt. Ja!
_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
SunTzu



Anmeldungsdatum: 30.01.2008
Beiträge: 25

BeitragVerfasst am: 19.02.2008, 20:53    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
SpionAtom



Anmeldungsdatum: 10.01.2005
Beiträge: 395

BeitragVerfasst am: 20.02.2008, 00:17    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 20.02.2008, 10:36    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
SunTzu



Anmeldungsdatum: 30.01.2008
Beiträge: 25

BeitragVerfasst am: 21.02.2008, 17:40    Titel: Antworten mit Zitat

Nein es geht schon um die Strukturierung, nicht die Geschwindigkeit des Programms!

Vielen dank!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu QBasic. Alle Zeiten sind GMT + 1 Stunde
Gehe zu Seite 1, 2  Weiter
Seite 1 von 2

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz