Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Schbezzy
Anmeldungsdatum: 01.10.2006 Beiträge: 2
|
Verfasst am: 01.10.2006, 05:58 Titel: Problemen mit Dezimalzahlen und Ihre Kommas |
|
|
Hallo, ich hoffe mir kann einer helfen, also folgendes:
Ich versuch gerade eine Programmschleife mit Do...LOOP zu erstellen, die eine normale Dezimalzahl in eine DUAL-Zahl umwandeln soll. Jeder Schritt den sie Durchläuft soll gePRINTet werden.
z.B:
78
um daraus eine DUALzahl zu gewinnen muss man sie so lange durch 2 teilen bis sie an 0 angekommen ist. Immer wenn ein Rest übrig ist, d.h. wenn sich eine Kommazahl bildet, dann wird eine 1 ausgegeben. dann wird die kommazahl abgerundet auf eine Ganzzahl.
78/2 = 39 = 0 als Rest
39/2 = 19.5 = 1 als Rest
19/2 = 9.5 = 1 als Rest
9/2 = 4.5 = 1 ...usw...
4/2 = 2 = 0
2/2 = 1 = 0
1/2 = 0.5 = 1
verkehrt herum gelesen (von unten nach oben) entsteht dann die
DUALZAHL von 78, nämlich: 1001110
Jetzt meine Frage: Gibt es einen Befehl, der erkennt ob es sich bei der Zahl um eine Ganzzahl handelt oder ob es eine Kommazahl ist?
z.B. so, IF zahl = REST then PRINT "1" ELSE PRINT "0"
gibt es einen Befehl der eine Kommazahl abrundet auf eine Ganzzahl?
Ich hoffe es kann mir jemand Helfen.
Danke schon mal im vorraus.
PS: Da ich noch nich so gängig in FB bin hoffe ich dass fals ihr Fehler im Beispiel zur programmierung findet es mir verzeiht
MfG Schbezzy  |
|
Nach oben |
|
 |
Lutz Ifer Grillmeister

Anmeldungsdatum: 23.09.2005 Beiträge: 555
|
Verfasst am: 01.10.2006, 08:25 Titel: |
|
|
Code: | dim as integer meinezahl
dim as string meinezahlindualdarstellung
meinezahl = 34
meinezahlindualdarstellung = bin(meinezahl)
print meinezahlindualdarstellung
'dieses war der erste streich, doch der zweite folgt sogleich:
if int(meinezahl) = meinezahl then
print "meinezahl ist eine ganzzahl"
else
print "meinezahl ist eine kommazahl"
end if |
=> bin() wandelt eine zahl in einen string um, der das dualzahlpendant der zahl enthält,
=> int() wandelt eine zahl in eine ganzzahl um, und wenn eine zahl gleich ihrem ganzzahligen anteil ist, dann ist die zahl selber ganzzahl.
Gruß
Lutz Ifer _________________ Wahnsinn ist nur die Antwort einer gesunden Psyche auf eine kranke Gesellschaft. |
|
Nach oben |
|
 |
Wasja
Anmeldungsdatum: 18.04.2006 Beiträge: 19
|
Verfasst am: 01.10.2006, 08:26 Titel: |
|
|
Hallo! Um den Rest der Teilung durch 2 zu erkennen ist der Befehl x MOD 2 am besten geeignet. Um dann den Rest 1 auszugeben, kannst du einfach machen...
Code: |
x=78 'Festlegen der Zahl die Als Dualzahl angezeigt werden soll.
DO
x MOD 2 'Drch 2 Teilen und den Rest bestimmen
y=INT(x) 'Den Rest auf die nächste Ganzzahl aufrunden
PRINT x 'Die Zahl 1 oder 0 ausgeben
LOOP UNTIL x=1 'oder was anderes zum Beenden der Schleife...
|
Was du aber auch machen könntest, such dir eine Tabelle, in der alle Dualzahlen bis 255 drinstehen und mach es mit PRINT USING... Dabei kannst du auch das ganze Programm umschreiben und ohne Schleife betreiben... Must halt am Anfang eine IF-Abfrage machen, in welchem Bereich die Zahl liegt. |
|
Nach oben |
|
 |
dreael Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 2529 Wohnort: Hofen SH (Schweiz)
|
Verfasst am: 01.10.2006, 10:10 Titel: |
|
|
Habe zum Thema Basisumwandlung einen kleinen Code bereitgestellt:
http://beilagen.dreael.ch/QB/BASUMW.BAS
=> Wandelt zu beliebigen Basen (2-36) um. Die wichtigsten Operationen sind die Ganzzahldivision ("\") und Modulo ("MOD"). Im Wesentlichen dividiert man einfach eine Stelle nach der anderen heraus, bis 0 verbleibt. _________________ Teste die PC-Sicherheit mit www.sec-check.net |
|
Nach oben |
|
 |
RaideR
Anmeldungsdatum: 15.09.2006 Beiträge: 21
|
Verfasst am: 01.10.2006, 12:46 Titel: Re: Problemen mit Dezimalzahlen und Ihre Kommas |
|
|
[quote="Schbezzy"]gibt es einen Befehl der eine Kommazahl abrundet auf eine Ganzzahl? quote]
also um eine Kommazahl aufzurunden bzw. abrunden muss du das hier machen
int streicht die stellen hinterm komma weg
hoffe ich hab deine frage richtig verstanden  |
|
Nach oben |
|
 |
Schbezzy
Anmeldungsdatum: 01.10.2006 Beiträge: 2
|
Verfasst am: 01.10.2006, 16:38 Titel: Dankeschön |
|
|
Warum das so kompliziert rechnen wenns auch einfach geht,
die Lösung von Lutz Ifer ist da am ehesten hingekommen,
danke trotzdem euch allen für eure bemühungen
Den Befehl BIN habe ich gesucht
Gruss Schbezzy |
|
Nach oben |
|
 |
Michael Frey

Anmeldungsdatum: 18.12.2004 Beiträge: 2577 Wohnort: Schweiz
|
Verfasst am: 01.10.2006, 17:50 Titel: Re: Problemen mit Dezimalzahlen und Ihre Kommas |
|
|
RaideR hat Folgendes geschrieben: | Schbezzy hat Folgendes geschrieben: | gibt es einen Befehl der eine Kommazahl abrundet auf eine Ganzzahl? |
also um eine Kommazahl aufzurunden bzw. abrunden muss du das hier machen
int streicht die stellen hinterm komma weg
hoffe ich hab deine frage richtig verstanden  |
Es gibt auch noch CInt, dort kann man sich das +0.5 sparen  _________________ http://de.wikibooks.org/wiki/FreeBasic Jede Hilfe für dieses Buch ist Willkommen!
http://de.wikibooks.org/wiki/FreeBasic:_FAQ FAQ zu Freebasic (im Aufbau, hilfe Willkommen)
Neu mit Syntax Highlight |
|
Nach oben |
|
 |
|