Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Zahlen zusammenfassen, nicht addieren (https://www.delphipraxis.net/106498-zahlen-zusammenfassen-nicht-addieren.html)

-remit- 11. Jan 2008 19:25


Zahlen zusammenfassen, nicht addieren
 
Hallo,

ich habe vergeblich 1 Stunde gesucht, wusste auch nicht so recht unter welchem Suchbegiff. Ich habe folgendes Problem:

Eine Integer-Var sollen zwei andere Integer-Vars zugewiesen werden, nicht addidativ, sondern zusammengefasst. Beispiel:

x:=2+3
x:=23 und nicht 5

ich hoffe es ist möglich ohne einen langen Quelltext zu schreiben, ein Art "+" , das nur zusammenfasst und nicht addiert wäre fein.

Danke im Voraus!

Dax 11. Jan 2008 19:30

Re: Zahlen zusammenfassen, nicht addieren
 
Deklariere x als String und füge deine Integer auch als Strings wieder hinten an. Wie man Integer (Int) int Strings (Str) umwandelt, dürfte ja geläufig sein ;)

calculon 11. Jan 2008 19:31

Re: Zahlen zusammenfassen, nicht addieren
 
Dafür musst du die integer Variablen vorher in strings verwandeln und dann wieder zurück:
Delphi-Quellcode:
var
  str: string;
  a, b, c: integer;
begin
  a := 2; b := 3;
  str := inttostr(a) + inttostr(b);
  c := strtoint(str);
end;

-remit- 11. Jan 2008 19:33

Re: Zahlen zusammenfassen, nicht addieren
 
Danke für eure schnellen Antworten, gibt es wirklich nur den Weg über Strings oder wären die anderen zu lang bzw zu kompliziert?

3_of_8 11. Jan 2008 19:36

Re: Zahlen zusammenfassen, nicht addieren
 
Delphi-Quellcode:
x:=trunc(intpower(10, trunc(log10(b))+1)*a+b);
Möglicherweise geht das auch schneller, ich wüsste aber nicht, wie.

@calculon: Das würde ich als Umweg bezeichnen.

Nikolas 11. Jan 2008 19:37

Re: Zahlen zusammenfassen, nicht addieren
 
Was willst du denn damit machen, dass es dir so auf Geschwindigkeit ankommt?

calculon 11. Jan 2008 19:43

Re: Zahlen zusammenfassen, nicht addieren
 
Wenn's nur zur Ausgabe ist, dann -> Konsolenanwendung
Delphi-Quellcode:
writeln(a,b);
Zitat:

Zitat von 3_of_8
@calculon: Das würde ich als Umweg bezeichnen.

Ja, ich sehe gerade du hast es algorithmisch gemacht. Ohne deinen Algo. getestet zu haben, glaub' ich dir einfach mal. Ich wüsste nicht wie ich das ohne inttostr und strtoint gemacht hätte...

Gruß

Calculon
--

-remit- 11. Jan 2008 19:43

Re: Zahlen zusammenfassen, nicht addieren
 
Ich möchte die einzahligen Werte eines Array so zusammenfassen. Sollte also kein allzugroßer Umweg sein.

DeddyH 11. Jan 2008 19:44

Re: Zahlen zusammenfassen, nicht addieren
 
Vielleicht ist es so verständlicher:
Delphi-Quellcode:
function zusammenfassen(const arr: array of integer): integer;
var i: integer;
begin
  Result := 0;
  for i := Low(arr) to High(arr) do
    Result := Result * 10 + arr[i];
end;

3_of_8 11. Jan 2008 19:44

Re: Zahlen zusammenfassen, nicht addieren
 
Achja, ich hab mal schnell eine Funktion geschrieben, die ohne Gleitkommaberechnungen auskommt:

Delphi-Quellcode:
function ConcatNumbers(const a, b: Cardinal): Cardinal;
var I, tmp: Integer;
begin
  I:=0;
  tmp:=1;
  while tmp<=b do
    tmp:=tmp*10;
  Result:=a*tmp+b;
end;

Laufzeit: T(a, b)=5+lg b=O(log b) falls es interessiert. ;)

@DeddyH: Wenn ich das richtig sehe, funktioniert deine Funktion nur für Werte zwischen 0 und 9.


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:51 Uhr.
Seite 1 von 3  1 23      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz