![]() |
zählen mit buchstaben?
hoi, wie kann ich mit buchstaben zählen?
also das A = 1, Z = 26, das z.b A+Z = 27 ist? |
Re: zählen mit buchstaben?
Hallo. Trag doch einfach die Buchstaben in ein Array ein...Dann hast du über den Index Zugriff auf die Buchstaben.
Man liest sich, Stanlay :hi: |
Re: zählen mit buchstaben?
Hallo silent,
dann schau Dir doch mal die Funktion Ord an. A liefert den Wert 65 und Z den Wert 90. |
Re: zählen mit buchstaben?
(ORD('A') - 64) + (ORD('Z') - 64)
|
Re: zählen mit buchstaben?
hoi, sorry das ich als ergebnis ne zahl angegeben hab, ich meinte eigentlich das das ergebnis auch ausbuchstaben bestehen soll,
z.b das Z+Z = AX also das gleiche wie 9+9 = 18 ne idee? |
Re: zählen mit buchstaben?
Dann mußt Du das Ergebnis hinterher mit Chr wieder in Buchstaben umwandeln. Chr (90) liefert Dir ein Z.
|
Re: zählen mit buchstaben?
wenn ich es so mache:
(ORD('Z') - 64) + (ORD('Z') - 64) dann ist das ergebnis ja 52(26+26), wie sollte ich daraus das ergebnis bekommen ? :| ich muss ja ein 2stelliges buchstaben ergebnis rausbekommen |
Re: zählen mit buchstaben?
Ist etwas schwieriger, kommt aber gleich. :mrgreen:
|
Re: zählen mit buchstaben?
Hi!
Zitat:
Sehe da grad keinen Zusammenhang! Ciao fkerber |
Re: zählen mit buchstaben?
Hallo fkerber,
das entspricht einem Zahlensystem zur Basis 26. |
Re: zählen mit buchstaben?
@r_kerber: Das wollte ich auch gerade schreiben! :cry:
@silent: Das würde bedeuten, das Z + Z = B ist, da Z = 26 -> 26 + 26 = 52. Und 52 = 2*26^1 und 2 = B. EDIT: Ich habe mich da wohl verrechnet, wie ich gerade gemerkt habe. Ich musses nochmal kontrollieren. |
Re: zählen mit buchstaben?
Also, ich habe mir alles noch mal durch den Kopf gehen lassen und habe gererkt: in diesem System fehlt die Null! Solang es keine Null hat, wirst du wohl auch keine Rechungen durchführen können.
|
Re: zählen mit buchstaben?
Es geht, war auch schon fertig.
Mir ist aber leider der Rechnerabgestürtzt, bevor ich speichern konnte. :cry: :wall: Also in 5 Minuten nochmal. |
Re: zählen mit buchstaben?
Liste der Anhänge anzeigen (Anzahl: 1)
Hat 'en bissl länger gedauert.
Dafür jetzt auch noch verbessert. :mrgreen: :idea: Einfach etwas abstrakt denken und "ohne" Nullen rechnen. Eine Null "@" ist zwar vorhanden, damit aber das gewünschte Ergebnis raus kommt wurde sie in der Ausgabe übersprungen. :thuimb: Also dann noch viel Spaß damit :firejump: |
Re: zählen mit buchstaben?
Hier noch die 35er Variante mit 0 bis 9 und A bis Z (Buchstabe O weggelassen wegen Ähnlichkeit zu Zahl 0):
Delphi-Quellcode:
function IntPowerInt(ABaseNum, AExponent : Integer) : Integer;
var MultCount : Integer; begin Result := 1; for MultCount := 1 to AExponent do Result := Result * ABaseNum; end; function AlphaToNum(ATNstr : String ) : LongWord; const ValidChars : set of Char = ['0'..'9', 'A'..'N', 'P'..'Z']; var ACount : Integer; function CharNum(CNchr : Char) : Byte; begin Case Ord(UpCase(CNchr)) Of 48..57: CharNum := Ord(UpCase(CNchr)) - 48; 65..78: CharNum := Ord(UpCase(CNchr)) - 55; 80..90: CharNum := Ord(UpCase(CNchr)) - 56; end; end; begin AlphaToNum := 0; for ACount := 1 to length(ATNstr) do begin If not (UpCase(ATNstr[ACount]) in ValidChars) then begin result := 0; Break; end; result := result + (CharNum(ATNstr[ACount]) * IntPowerInt(35, length(ATNstr) - ACount)); end; end; function NumToAlpha(NTAnum : LongWord ) : String; var NumChar : array[0..34] Of Char; NumCount : Word; begin for NumCount := 0 to 9 do NumChar[NumCount] := Chr(48 + NumCount); for NumCount := 10 to 23 do NumChar[NumCount] := Chr(55 + NumCount); for NumCount := 24 to 34 do NumChar[NumCount] := Chr(56 + NumCount); // max 35 hoch (7-1) result := ''; for NumCount := 7 downto 1 do If (NTAnum < IntPowerInt(35, NumCount)) then begin result := result + NumChar[NTAnum div IntPowerInt(35, NumCount-1)]; NTAnum := NTAnum mod IntPowerInt(35, NumCount-1); end; end;
Delphi-Quellcode:
s1 := 'AZGE';
s2 := 'X45B'; s3 := NumToAlpha(AlphaToNum(s1) + AlphaToNum(s2)); |
Re: zählen mit buchstaben?
Zitat:
|
Re: zählen mit buchstaben?
Meintest wohl "A@".
Da die Null ("@") übersprungen wird, ist "Z" (26) + "A" (1) nicht "A@" (1.0) sondern "AA" (1.1). Logischer währe es gewesen "A" = 0 ... "Z" = 25 zu setzen, dann ist aber "A" (0) + "A" (0) = "A" (0) und nicht "A" (1) + "A" (1) = "B" (2). Deshalb gibt es bei diesem Zahlensystem auch nur die Wertigkeiten 1 bis 26. Add: Ist vieleicht etwas schwer zu erklären, da wir ja sonst "nur" mit Zahlensystem die eine 0 enthalen arbeiten: Binär = 0 und 1 Oktal = 0 bis 7 Hexadezimal = 0 bis 15 und natürlich das dezimale = 0 bis 9 ... |
Re: zählen mit buchstaben?
Das Problem ist ja, ein Zahlensystem ohne die Null ist nicht wirklich ein Zahlensystem, wenn man es mathematisch betrachtet.
|
Re: zählen mit buchstaben?
Das ist schon ein, es kennt halt nur die Werte 1 bis unendlich.
Das geht doch schon in die Richtung, wie: Wenn 3 Menschen in einem Raum sind und 5 diesen verlassen, müssen 2 wieder rein gehen, damit niemand mehr drin ist. |
Re: zählen mit buchstaben?
Moin The Master,
Zitat:
Bei den römischen Zahlen gibt es auch keine 0. Da man erst mit der 0 sinnvoll rechnen konnte, haben wir heute wohl auch die arabischen Ziffern, denn die Araber haben die 0 eingeführt. (Übrigens sifr ist das arabische Wort für 0, aus dem dann bei uns das Wort Ziffer geworden ist). |
Re: zählen mit buchstaben?
Deswegen denke ich auch , am logischsten ist es ähnlich wie beim Hex-System '0' bis '9' und 'A' bis 'Z' zu verwenden, wie in meinem Beispiel weiter oben. Dann hat A den Dezimalwert 10 und Z den Dezimalwert 35.
'A' + 'Z' ergibt '19', während '1' + 'Z' zusammen '10' ist. |
Re: zählen mit buchstaben?
Hallo Christian Seehase,
Zitat:
|
Re: zählen mit buchstaben?
hoi^^
Zitat:
ok machen wirs mal anders.... sagen wir das 26(Z) = 0 ist dann wäre y+y = 50, also ergibt das AX falls jemand fragt wieso "AX"... bei Y+A wäre das ergebnis AZ (z steht für 0, A für 1) ich brauch das ganze nur einmalig für ein prog das mir eine textdatei generiert in der alle Buchstaben kombinationen (4stellen lang) vorhanden sind dazu muss das prog immer so in die datei schreiben: AAAA AAAB AAAC ... AAAY AABA AABB usw, das möchte ich gerne hinkriegen, hat jemand dafür eine idee? danke nochmal an die angehängten codes und progs ;) |
Re: zählen mit buchstaben?
Moin Silent,
an anderer Stelle hatten Himitsu und ich Dir jeweils einen kompletten Source für so eine Routine gepostet. Nimm doch die. |
Re: zählen mit buchstaben?
stimmt, sorry
dein code guck ich mir nochmal genauer an, himitsus versteh ich nicht ganz, soviele schleifen |
Re: zählen mit buchstaben?
Na, dann so:
Delphi-Quellcode:
function LongPowerLong(ABaseNum, AExponent : Word) : LongWord;
var MultCount : Integer; begin Result := 1; for MultCount := 1 to AExponent do Result := Result * ABaseNum; end; const AlphaBase = 26; AlphaMax = 4; function AlphaToNum(ATNstr : String ) : LongWord; const ValidChars : set of Char = ['A'..'Z']; var ACount : Integer; function CharNum(CNchr : Char) : Byte; begin Case Ord(UpCase(CNchr)) Of 65..90: CharNum := Ord(UpCase(CNchr)) - 65; end; end; begin AlphaToNum := 0; for ACount := 1 to Min(length(ATNstr), AlphaMax+1) do begin If not (UpCase(ATNstr[ACount]) in ValidChars) then begin result := 0; Break; end; result := result + (CharNum(ATNstr[ACount]) * LongPowerLong(AlphaBase, Min(length(ATNstr), AlphaMax+1) - ACount)); end; end; function NumToAlpha(NTAnum : LongWord ) : String; var NumChar : array[0..AlphaBase-1] Of Char; NumCount : Word; begin for NumCount := 0 to (AlphaBase-1) do NumChar[NumCount] := Chr(65 + NumCount); // max 26 hoch (5-1) result := ''; for NumCount := (AlphaMax+1) downto 1 do If (NTAnum < LongPowerLong(AlphaBase, NumCount)) then begin If not (NumCount = (AlphaMax+1)) then result := result + NumChar[NTAnum div LongPowerLong(AlphaBase, NumCount-1)]; NTAnum := NTAnum mod LongPowerLong(AlphaBase, NumCount-1); end; end;
Delphi-Quellcode:
Macht 456976 Möglichkeiten * 6 Bytes (#13#10 dabei) = 2741856 Bytes
var
ATextFile : TextFile; bucount : LongWord; begin AssignFile(ATextFile, 'C:\buchstab.txt'); ReWrite(ATextFile); for bucount := AlphaToNum('AAAA') to AlphaToNum('ZZZZ') do WriteLn(ATextFile, NumToAlpha(bucount)); CloseFile(ATextFile); end; |
Re: zählen mit buchstaben?
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
Wenn das etwas mit dem Beitrag "alle Kombinationen 00000000..ZZZZZZZZ in textfile?" zu tun hat, ist das ja sowieso beendet. Hab den Code nochmal angehängt - mit extra vielen Kommentaren. Zitat:
Delphi-Quellcode:
Function StringAddition... {von mir}
Var Datei: TextFile; S: String; S := 'AAAA'; Repeat WriteLn(Datei, S); S := StringAddition(S, 'A'); Until Length(S) > 4;
Delphi-Quellcode:
Var Datei: TextFile;
a, b, c, d: Byte; For a := 65 to 90 do For b := 65 to 90 do For c := 65 to 90 do For d := 65 to 90 do WriteLn(Datei, Chr(a) + Chr(b) + Chr(c) + Chr(d)); |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:51 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz