Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi zählen mit buchstaben? (https://www.delphipraxis.net/11210-zaehlen-mit-buchstaben.html)

Dagon 2. Nov 2003 11:20

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.

Dagon 2. Nov 2003 11:26

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.

himitsu 2. Nov 2003 11:31

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.

himitsu 2. Nov 2003 12:00

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:

scp 2. Nov 2003 12:14

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));

r_kerber 2. Nov 2003 12:28

Re: zählen mit buchstaben?
 
Zitat:

Zitat von himitsu
Eine Null "@" ist zwar vorhanden, damit aber das gewünschte Ergebnis raus kommt wurde sie in der Ausgabe übersprungen.

Geht das überhaupt? Z+A sollte doch eigentlich A0 ergeben, oder?

himitsu 2. Nov 2003 12:38

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
...

Dagon 2. Nov 2003 12:40

Re: zählen mit buchstaben?
 
Das Problem ist ja, ein Zahlensystem ohne die Null ist nicht wirklich ein Zahlensystem, wenn man es mathematisch betrachtet.

himitsu 2. Nov 2003 13:01

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.

Christian Seehase 2. Nov 2003 14:27

Re: zählen mit buchstaben?
 
Moin The Master,

Zitat:

Zitat von the_master
Das Problem ist ja, ein Zahlensystem ohne die Null ist nicht wirklich ein Zahlensystem, wenn man es mathematisch betrachtet.

Das dürfte wohl Definitionssache sein.
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).


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:42 Uhr.
Seite 2 von 3     12 3      

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 by Thomas Breitkreuz