Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
hello
Anmeldungsdatum: 15.04.2010 Beiträge: 34
|
Verfasst am: 27.05.2010, 15:14 Titel: Binärzahlen |
|
|
Hallo,
ich wollte eine Dualzahl in "normale" Zahlen umwandeln. Bis jetzt hab' ich den Code:
Code: | DIM eingabe AS STRING
DIM AS INTEGER i, summe
WHILE 1 > 0
'-----------------------------------------------------------
COLOR 5
?"__________________________________"
COLOR 7
'-----------------------------------------------------------
?"Gib eine Bin"+chr(132)+"rzahl ein: "
INPUT " ", eingabe
'-----------------------------------------------------------
FOR i = 1 TO len(eingabe)
'-----------------------------------------------------------
IF MID(eingabe, i, 1) = "1" THEN
summe = summe + 2^(i-1)
END IF
'-----------------------------------------------------------
NEXT i
'-----------------------------------------------------------
PRINT summe
WEND |
Jetzt muss man allerdings die Dualzahlen andersherum eintippen. Wisst ihr eine Lösung?
Ich hab mir überlegt, dass der vielleicht von LEN(eingabe) bis 0 die FOR - Schleife macht, nur wie geht das ?
Im FreeBASIC-Portal hab' ich noch nichts gefunden
Danke schonmal für eure Hilfe
|
|
|
\/ _________________ Regards  |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 27.05.2010, 15:16 Titel: |
|
|
Es ist ja nicht so, dass es diese Funktion noch nicht gäbe, aber ist sicher eine nette Übung.
Rückwärts zählt man in FOR-Schleifen so:
Code: | FOR i as integer = 10 to 0 step -1 |
Der Rest bleibt deiner Kreatitivität überlassen. _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
hello
Anmeldungsdatum: 15.04.2010 Beiträge: 34
|
Verfasst am: 27.05.2010, 15:35 Titel: |
|
|
Jojo hat Folgendes geschrieben: | Es ist ja nicht so, dass es diese Funktion noch nicht gäbe, aber ist sicher eine nette Übung.
Rückwärts zählt man in FOR-Schleifen so:
Code: | FOR i as integer = 10 to 0 step -1 |
Der Rest bleibt deiner Kreatitivität überlassen. |
Maaaaaann, ich bin wirklich so hirnverbrannt =DDD Danke sehr  _________________ Regards  |
|
Nach oben |
|
 |
hello
Anmeldungsdatum: 15.04.2010 Beiträge: 34
|
Verfasst am: 27.05.2010, 15:38 Titel: |
|
|
Jojo hat Folgendes geschrieben: | Es ist ja nicht so, dass es diese Funktion noch nicht gäbe, aber ist sicher eine nette Übung.
Rückwärts zählt man in FOR-Schleifen so:
Code: | FOR i as integer = 10 to 0 step -1 |
Der Rest bleibt deiner Kreatitivität überlassen. |
So, ich habs jetzt so:
Code: | DIM eingabe AS STRING
DIM AS INTEGER i, summe
WHILE 1 > 0
'-----------------------------------------------------------
COLOR 5
?"__________________________________"
COLOR 7
'-----------------------------------------------------------
?"Gib eine Bin"+chr(132)+"rzahl ein: "
INPUT " ", eingabe
'-----------------------------------------------------------
FOR i = len(eingabe) TO 0 STEP -1
'-----------------------------------------------------------
IF MID(eingabe, i, 1) = "1" THEN
summe = summe + 2^(i-1)
END IF
'-----------------------------------------------------------
NEXT i
'-----------------------------------------------------------
PRINT summe
WEND
|
Aber es klappt nicht :'((( _________________ Regards  |
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4704 Wohnort: ~/
|
Verfasst am: 27.05.2010, 16:00 Titel: |
|
|
Zunächst mal sollte es wohl TO 1 statt TO 0 heißen. Dass es nicht klappt, ist klar; du rechnest beim ersten Zeichen (i = 1) mit *2^0, egal ob du die Schleife vor oder zurück läufst. Du musst schon den Exponenten neu berechnen, so in der Art
Code: | summe = summe + 2^(len(eingabe)-i) |
(ich habe jetzt nicht nachgerechnet ob es stimmt) _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
|