![]() |
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! |
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 ;)
|
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; |
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?
|
Re: Zahlen zusammenfassen, nicht addieren
Delphi-Quellcode:
Möglicherweise geht das auch schneller, ich wüsste aber nicht, wie.
x:=trunc(intpower(10, trunc(log10(b))+1)*a+b);
@calculon: Das würde ich als Umweg bezeichnen. |
Re: Zahlen zusammenfassen, nicht addieren
Was willst du denn damit machen, dass es dir so auf Geschwindigkeit ankommt?
|
Re: Zahlen zusammenfassen, nicht addieren
Wenn's nur zur Ausgabe ist, dann -> Konsolenanwendung
Delphi-Quellcode:
writeln(a,b);
Zitat:
Gruß Calculon -- |
Re: Zahlen zusammenfassen, nicht addieren
Ich möchte die einzahligen Werte eines Array so zusammenfassen. Sollte also kein allzugroßer Umweg sein.
|
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; |
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 23:59 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 by Thomas Breitkreuz