Delphi-PRAXiS
Seite 2 von 6     12 34     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Umrechnen Bin-Dez / Dez-Bin ohne shr oder shl (https://www.delphipraxis.net/8519-umrechnen-bin-dez-dez-bin-ohne-shr-oder-shl.html)

Evian 6. Sep 2003 22:29

Re: Frage zu Pascal
 
na na!!! Du hast doch wieder inttostr benutzt :) ...

aber müsste es nicht so gehen:

Delphi-Quellcode:
function IntToBin(i: Integer): string;
VAR
h, e, c : integer;
s, s2 : STRING;
BEGIN
h := i;
e := 0;


REPEAT
h := h DIV 2;
e := i MOD 2;
VAL(s,e,c);
s2 := s2 + s;
UNTIL h < 2;
inttobin := s2;
end;
?!

Evian

[edit=Luckie]Delphi-Tags ergänzt. Ein bischen Code formatieren könnte auch nicht schaden. :wink: Mfg, Luckie[/edit]

Luckie 6. Sep 2003 22:32

Re: Frage zu Pascal
 
Sorry, auch gerade gemerkt.
Hier die Komplettlösung - hin und zurück:
Delphi-Quellcode:
function IntToStr(IntNumber: Integer): string;
begin
  Str(IntNumber, result);
end;

function StrToInt(s: String): Integer;
var
  code: Integer;
begin
  val(s, result, code);
end;

function IntToBin(IntNumber: Integer): string;

  function OtherWayRound(s: string): string;
  var
    Loop: Integer;
  begin
    for Loop := length(s) downto 1 do
    begin
      result := result + s[Loop];
    end;
  end;

var
  res: Integer;
begin
  res := IntNumber;
  while res <> 0 do
  begin
    result := result + IntToStr(res mod 2);
    res := res div 2;
  end;
  result := OtherWayRound(result);
end;

function BinToInt(s: string): Integer;
var
  Loop: Integer;
  Multiplier: Integer;
begin
  result := 0;
  Multiplier := 1;
  for Loop := 1 to length(s) do
  begin
    result := result + StrToInt(s[Loop]) * Multiplier;
    Multiplier := Multiplier * 2;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
const
  IntNumber = 17;
  BinNumber = '10001';
begin
  ShowMessage(IntToBin(IntNumber));
  ShowMessage(IntToStr(BinToInt(BinNumber)));
end;
Probier deinen Code doch aus.

Evian 8. Sep 2003 09:27

Re: Frage zu Pascal
 
Hatte am WE keine Zeit mehr..., aber Danke für die Hilfe ohne Deinen Grundansatz hätte ich wohl noch lange gerätzelt!

MFG

Evi

Luckie 8. Sep 2003 14:16

Re: Frage zu Pascal
 
Grundansatz ist gut. Der letzte Code ist die komplette Lösung.

Evian 8. Sep 2003 14:32

Re: Umrechnen Bin-Dez / Dez-Bin ohne shr oder shl
 
Ich habe nicht Deinen Code übernommen, sondern mit dem Tip:

15 / 2 = 7 R1
7 / 2 = 3 R1
3 / 2 = 1 R1
1 / 2 = 0 R1

..einen eigenen gemacht, da Deiner so wie er als letztes Gepostet wurde auch wieder nicht ging.

sakura 8. Sep 2003 14:36

Re: Umrechnen Bin-Dez / Dez-Bin ohne shr oder shl
 
Ich auch :firejump:

Den Thread hatte ich gar nicht gesehen :cry: Hier mal meine Lösung komplett ohne StrToInt und ohne IntToStr. Und ohne OtherWayRound (@Luckie: das wäre auch einfacher gegangen)...

Delphi-Quellcode:
function IntToBin(Value: Word): String;
const
  BIN_VALUE: array[0..1] of Char = ('0', '1');
begin
  Result := '';
  while Value > 1 do
  begin
    Result := BIN_VALUE[Value and $01] + Result;
    Value := Value div 2;
  end;
  Result := BIN_VALUE[Value and $01] + Result;
end;

function BinToInt(Value: String): Word;
const
  INT_VALUE: array['0'..'1'] of Byte = (0, 1);
var
  I: Integer;
begin
  Result := 0;
  for I := 1 to Length(Value) do
  begin
    Result := Result * 2;
    Result := Result + INT_VALUE[Value[I]];
  end;
end;
...:cat:...

Luckie 8. Sep 2003 14:48

Re: Umrechnen Bin-Dez / Dez-Bin ohne shr oder shl
 
Halt, da hast du wieder die and-Verknüpfung drin. Ich denke Ziel des Lehrers war es den Algorithmus, wie man es von Hand macht in Programmcode zufassen.

sakura 8. Sep 2003 14:55

Re: Umrechnen Bin-Dez / Dez-Bin ohne shr oder shl
 
Hm, wenn der Lehrer nicht genug IQ hat, um zu wissen, daß and auch "von Hand" ist, dann halt so:

Delphi-Quellcode:
function IntToBin(Value: Word): String;
const
  BIN_VALUE: array[0..1] of Char = ('0', '1');
begin
  Result := '';
  while Value > 1 do
  begin
    Result := BIN_VALUE[Value mod 2] + Result;
    Value := Value div 2;
  end;
  Result := BIN_VALUE[Value mod 2] + Result;
end;
...:cat:....

Luckie 8. Sep 2003 15:00

Re: Umrechnen Bin-Dez / Dez-Bin ohne shr oder shl
 
OK. Mal sehen, ob wir noch eine Rückmeldung zwecks unserer Note bekommen. :gruebel:

Sharky 8. Sep 2003 15:47

Re: Umrechnen Bin-Dez / Dez-Bin ohne shr oder shl
 
Zitat:

Zitat von Luckie
OK. Mal sehen, ob wir noch eine Rückmeldung zwecks unserer Note bekommen. :gruebel:

Wegen nicht erlaubter Gemeinschaftsarbeit:

fünf -> Setzen.

*gggg*

Sorry: Das musste sein :lol:


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:12 Uhr.
Seite 2 von 6     12 34     Letzte »    

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