![]() |
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. |
Re: Zahlen zusammenfassen, nicht addieren
Oha.. Ich dacht hier gehts um Ausgabe.. :oops:
|
Re: Zahlen zusammenfassen, nicht addieren
Zitat:
|
Re: Zahlen zusammenfassen, nicht addieren
Danke für die 4 -5 Möglichkeiten! Ich werde alle Vorschläge durchgehen ;) Damit werde ich erstmal genug zu tun haben...
PS: ja es handelt sich nur um Zahlen im Bereich von 0-9 |
Re: Zahlen zusammenfassen, nicht addieren
Delphi-Quellcode:
So ist es korrekt. T(1, 0) sollte 10 liefern, nicht 1. Ob es so viel bringen würde, tmp durch Result zu ersetzen, weiß ich momentan nicht.
function ConcatNumbers(const a, b: Cardinal): Cardinal;
var tmp: Cardinal; begin tmp:=10; while tmp<=b do tmp:=tmp*10; Result:=a*tmp+b; end; Zitat:
|
Re: Zahlen zusammenfassen, nicht addieren
Zitat:
@Dax: Touché ;) |
Re: Zahlen zusammenfassen, nicht addieren
Zitat:
Sein Quelltext funktioniert auch mit zweistelligen Zahlen. |
Re: Zahlen zusammenfassen, nicht addieren
Zitat:
|
Re: Zahlen zusammenfassen, nicht addieren
Zitat:
|
Re: Zahlen zusammenfassen, nicht addieren
Hallo,
wenn die zwei Werte im Bereich des Typs Word(0..65535) bleiben:
Delphi-Quellcode:
var x, i, ii : Integer;
//...schreiben x := MakeLong(12,13); //...Auslesen i := LoWord(x); ii := HiWord(x); |
Re: Zahlen zusammenfassen, nicht addieren
Lannes: das hat leider nicht den gewünschten effekt. Aus 12 und 13 sollte 1213 herauskommen, nicht wie bei dir 3085
|
Re: Zahlen zusammenfassen, nicht addieren
Hallo,
dachte es geht darum zwei Werte in einem Integer zu speichern :gruebel: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:22 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