Umrechnung von Zahlensystemen (bis 36)

Übersicht BlitzBasic Codearchiv

Neue Antwort erstellen

Tennisball

Betreff: Umrechnung von Zahlensystemen (bis 36)

BeitragMi, Dez 09, 2009 23:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,

ich hab hier eine kleine Funktion geschrieben (aus Langeweile... Rolling Eyes ), die Zahlen aus allen Zahlensystemen bis 36, sprich alle Ziffern und Großbuchstaben bis Z, in ein beliebiges anderes umwandelt.

BlitzBasic: [AUSKLAPPEN]
Function X2X$(zahl$, sys1, sys2)

Local x$ = zahl$
Local decZahl
Local negativ

Local a$, b


If Instr(x$, "-") Then x$ = Right(x$, Len(x$) - 1) : negativ = 1


For i = 1 To Len(x$)

a$ = Upper(Mid(x$, i, 1))
b = a$

If b = 0 And a$ <> "0" Then
b = Asc(a$) - 55
End If

decZahl = decZahl * sys1
decZahl = decZahl + b

Next


wert = decZahl

Local XZahl$

Local c$, d, e
Local fertig

d = wert


Repeat

e = d Mod sys2
d = d / sys2

c$ = e
If e => 10 Then c$ = Chr$(e + 55)

XZahl$ = c$ + XZahl$


If d = 0 Then fertig = 1

Until fertig = 1


If negativ = 1 Then XZahl$ = "-" + XZahl$


Return XZahl$

End Function



Wert$ = Input("Zahl eingeben: ")
Ausgangssystem = Input("Ausgangssystem: ")
Zielsystem = Input("Zielsystem: ")

Print X2X$(Wert$, Ausgangssystem, Zielsystem)


WaitKey()
End


Ich rechne zuerst die Zahl ins Dezimalsystem um und dann vom Dezimalsystem ins gewünschte System um.

Viel Spaß damit.


Edit: Wandelt nun auch negative Zahlen korrekt um.
  • Zuletzt bearbeitet von Tennisball am Di, Jan 12, 2010 19:58, insgesamt 2-mal bearbeitet

beanage.johannes

BeitragDo, Dez 10, 2009 16:04
Antworten mit Zitat
Benutzer-Profile anzeigen
sorry, aber das verstehe ich nicht ganz... Rolling Eyes

Tennisball

BeitragDo, Dez 10, 2009 16:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Du kennst ja (hoffentlich) Binärzahlen (z.B. 1010110) oder Hexadezimalzahlen (ABCDEF).
Und z.B. "1101" im Binärsystem (-> Binärzahl) ist "13" im Dezimalsystem (10er-System) oder "D" im Hexadezimalsystem (16er-System).
Es gibt auch noch andere Systeme (z.B. Oktalsystem, also 8er-System).
Siehe auch hier.

Also hab ich eine Umrechnungsfunktion geschrieben. Wenn jemand lieber mit Dezimalzahlen als mit Oktalzahlen arbeitet (oder aus irgendeinem anderen Grund), kann er sie umrechnen.

the FR3AK

BeitragDo, Dez 10, 2009 17:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Und was bedeutet das "bis 36" ?
Etwa dass man nur Zahlen bis 36 rechnen kann? Wenn ja, dann halte ich es für ziemlich sinnlos

D2006

Administrator

BeitragDo, Dez 10, 2009 17:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Rolling Eyes

Nein, es bedeutet, dass die Umrechnung bis zum 36. Stellensystem geht. Die 36 bezieht sich dabei auf die Anzahl der Ziffern, die dieses System kennt.
Intel Core i5 2500 | 16 GB DDR3 RAM dualchannel | ATI Radeon HD6870 (1024 MB RAM) | Windows 7 Home Premium
Intel Core 2 Duo 2.4 GHz | 2 GB DDR3 RAM dualchannel | Nvidia GeForce 9400M (256 MB shared RAM) | Mac OS X Snow Leopard
Intel Pentium Dual-Core 2.4 GHz | 3 GB DDR2 RAM dualchannel | ATI Radeon HD3850 (1024 MB RAM) | Windows 7 Home Premium
Chaos Interactive :: GoBang :: BB-Poker :: ChaosBreaker :: Hexagon :: ChaosRacer 2

beanage.johannes

BeitragDo, Dez 10, 2009 18:13
Antworten mit Zitat
Benutzer-Profile anzeigen
hey ok, super funktion ! kann ich gebrauchen, danke Smile

FireballFlame

BeitragDo, Dez 10, 2009 19:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Warum nur 36? Kannst doch dann Sonderzeichen nehmen Razz
PC: Intel Core i7 @ 4x2.93GHz | 6 GB RAM | Nvidia GeForce GT 440 | Desktop 2x1280x1024px | Windows 7 Professional 64bit
Laptop: Intel Core i7 @ 4x2.00GHz | 8 GB RAM | Nvidia GeForce GT 540M | Desktop 1366x768px | Windows 7 Home Premium 64bit

Tennisball

BeitragDo, Dez 10, 2009 21:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja, man kann im Prinzip mit dem Code Zahlen bis ins 72er System umrechnen. Allerdings kann man nicht ganz Zahlen aus dem 72er System umrechnen, denn "a" wird zu "A". (Die Funktion arbeitet ja mit Chr und Asc...)

Edit: @coolo: Wurde eingebaut. Danke Smile
  • Zuletzt bearbeitet von Tennisball am Do, Dez 10, 2009 21:45, insgesamt einmal bearbeitet

coolo

BeitragDo, Dez 10, 2009 21:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Sehr schöner Code!

Allerdings sollte er noch lernen mit Minus Zahlen zu arbeiten Wink.
http://programming-with-design.at/ <-- Der Preis ist heiß!
That's no bug, that's my project!
"Eigenzitate sind nur was für Deppen" -Eigenzitat

FireballFlame

BeitragDo, Dez 10, 2009 23:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Was gibts denn da zu lernen?
PC: Intel Core i7 @ 4x2.93GHz | 6 GB RAM | Nvidia GeForce GT 440 | Desktop 2x1280x1024px | Windows 7 Professional 64bit
Laptop: Intel Core i7 @ 4x2.00GHz | 8 GB RAM | Nvidia GeForce GT 540M | Desktop 1366x768px | Windows 7 Home Premium 64bit

Tennisball

BeitragDo, Dez 10, 2009 23:11
Antworten mit Zitat
Benutzer-Profile anzeigen
@FF: Nichts mehr, ich hab es bereits verbessert, als coolo es geschrieben hat (sieht man ja auch an den ganzen edits)

das wurgel

BeitragFr, Dez 11, 2009 0:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
Allerdings kann man nicht ganz Zahlen aus dem 72er System umrechnen, denn "a" wird zu "A". (Die Funktion arbeitet ja mit Chr und Asc...)

Wieso wird dann "a" zu "A"?
Groß- und Kleinbuchstaben haben in Ascii-Format verschiedene Nummern
Code: [AUSKLAPPEN]
Print Chr("a")
Print Chr("A")
1 ist ungefähr 3
 

Rufus Serano

BeitragFr, Dez 11, 2009 1:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
Code: [AUSKLAPPEN]
Print Chr("a")
Print Chr("A")


Chr <> Asc

Außerdem müsste die Umsetzung durchaus möglich sein. Man muss eben zwischen 16er a bzw A und 37er a bzw A differenzieren. Ist man im 16er System: a -> A, ist man im 37er System bleibt a a und A A.

Tennisball

BeitragFr, Dez 11, 2009 14:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Habt ihr meinen Code gelesen ? Rolling Eyes

Dort steht ein Upper
Denn es soll ja Leute geben, die zu faul sind, Kleinbuchstaben zu Großbuchstaben zu machen.

Goodjee

BeitragFr, Dez 11, 2009 14:38
Antworten mit Zitat
Benutzer-Profile anzeigen
blub...und weg damit pls
"Ideen sind keine Coladosen, man kann sie nicht recyclen"-Dr. House
http://deeebian.redio.de/ http://goodjee.redio.de/
  • Zuletzt bearbeitet von Goodjee am Fr, Dez 11, 2009 15:21, insgesamt einmal bearbeitet

Tennisball

BeitragFr, Dez 11, 2009 14:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich habe ja nicht behauptet, es ginge nicht, ich habe nur behauptet, dass es mit genau dem Code nicht ganz geht.

Neue Antwort erstellen


Übersicht BlitzBasic Codearchiv

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group