AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Problem mit Binärrechner

Ein Thema von Metatron220 · begonnen am 19. Jul 2005 · letzter Beitrag vom 21. Jul 2005
Antwort Antwort
Seite 1 von 3  1 23      
Metatron220

Registriert seit: 31. Okt 2004
33 Beiträge
 
#1

Problem mit Binärrechner

  Alt 19. Jul 2005, 15:49
Ich möchte einen Rechner schreiben, der eine beliebige Zahl in Binärcode umwandelt. Folgenden Code habe ich geschrieben:
Delphi-Quellcode:
var x,y,z, r: integer;
begin
  edit2.Text:='';
  z:=2;
  x:=StrToInt(edit1.Text);
  r:=x;
  if x=1 then edit2.Text:=edit2.text+'1'
  else
  if x=0 then edit2.Text:=edit2.text+'0'
  else
  begin
  repeat
  z:=2;
     repeat
        y:=r div z;
        z:=z*2;
     until y=1;
     edit2.Text:=edit2.text+'1';
     r:=r mod z;
  until r=0;
  while z>2 do
  begin
    z:=z div 2;
    edit2.text:=edit2.text+'0';
  end;
  end;
end;
Edit1 ist das Editfeld in dem die umzurechnende Zahl steht, Edit2 ist das Feld in dem der Binärcode ausgegeben wird.

Jedoch bleibt das Programm immer hängen (ich nehme an es wiederholt eine Schleife unendlich oft) Hat jemand eine Ahnung was an dem Code falsch ist?

schon mal vielen dank im vorraus
  Mit Zitat antworten Zitat
Benutzerbild von Alexander Roth
Alexander Roth

Registriert seit: 17. Mai 2004
Ort: Kenn
574 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Problem mit Binärrechner

  Alt 19. Jul 2005, 15:58
Kann es sein das x von vornerein 0 ist, dann kann y in der schleife nie 1 werden.
Ebenfalls kann es sein dass x 1 ist, dann wird ebenfalls nix draus.

Erklärung, r:=x; damit kann r 1 oder 0 sein
dann wird: y:=r div 2
dann kann y nie 1 werden


PS: Kapier deine Umwandlung ins Binärsystem nicht
Alexander Roth
Ich bin umgestiegen auf: Lazarus und Ubuntu! Alles OpenSource!

Besuch doch mal: www.roth.us.ms
  Mit Zitat antworten Zitat
cell

Registriert seit: 5. Jul 2005
Ort: Ebensee
171 Beiträge
 
Delphi 4 Standard
 
#3

Re: Problem mit Binärrechner

  Alt 19. Jul 2005, 16:03
mach mal debuggen setz einen breakpoint und lass das programm laufen
  Mit Zitat antworten Zitat
DBR

Registriert seit: 19. Jul 2005
43 Beiträge
 
#4

Re: Problem mit Binärrechner

  Alt 19. Jul 2005, 16:11
Mach doch sowas:


Delphi-Quellcode:
function IntToBin(i: int64): string;
begin
  result := '';
  while i > 0 do begin
    result := inttostr(ord(odd(i))) + result;
    i := i shr 1;
  end;
  if result = 'then result := '0';
end;


procedure TForm1.Button7Click(Sender: TObject);
var x, y, z, r: integer;
begin
  edit2.Text := IntToBin(StrToIntDef(Edit1.Text, 0));
end;


Ist doch einfacher.
Gruß DBR

[edit=Admin]Delphi-Tags gesetzt. Künftig bitte selber machen. Danke Mfg, Daniel[/edit]
  Mit Zitat antworten Zitat
Benutzerbild von TeronG
TeronG

Registriert seit: 19. Jul 2004
Ort: München
960 Beiträge
 
Delphi 2007 Professional
 
#5

Re: Problem mit Binärrechner

  Alt 19. Jul 2005, 16:13
Zitat von DBR:
Mach doch sowas:
mach doch mal code-tags (heißen die so ??)

Zitat von DBR:
Delphi-Quellcode:

function IntToBin(i: int64): string;
begin
  result := '';
  while i > 0 do begin
    result := inttostr(ord(odd(i))) + result;
    i := i shr 1;
  end;
  if result = 'then result := '0';
end;


procedure TForm1.Button7Click(Sender: TObject);
var x, y, z, r: integer;
begin
  edit2.Text := IntToBin(StrToIntDef(Edit1.Text, 0));
end;

Ist doch einfach.
龍 Der Unterschied zwischen Theorie und Praxis ist in der Praxis größer als in der Theorie.
  Mit Zitat antworten Zitat
Benutzerbild von Alexander Roth
Alexander Roth

Registriert seit: 17. Mai 2004
Ort: Kenn
574 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: Problem mit Binärrechner

  Alt 19. Jul 2005, 16:14
Das
 result := ''; am Anfang kannst du auch weglassen.
Alexander Roth
Ich bin umgestiegen auf: Lazarus und Ubuntu! Alles OpenSource!

Besuch doch mal: www.roth.us.ms
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#7

Re: Problem mit Binärrechner

  Alt 19. Jul 2005, 16:17
Auch ich würde eine saubere Trennung von GUI und Funktionen vorziehen. Meine Umwandlungsroutine und die von DBR unterscheiden sich aber geringfügig:

Delphi-Quellcode:
function CardToDual(c: Cardinal): string;
begin
  Result := '';
  repeat
    Result := Chr(Ord('0') + Ord(Odd(c))) + Result;
    c := c shr 1;
  until c = 0;
end;

procedure TMainForm.ConvertButtonClick();
begin
  BinaryEdit.Text := CardToDual(StrToInt(DecimalEdit.Text));
end;
Grüße vom marabu
Angehängte Dateien
Dateityp: pas func.cardtodual_400.pas (173 Bytes, 4x aufgerufen)
  Mit Zitat antworten Zitat
barf00s
(Gast)

n/a Beiträge
 
#8

Re: Problem mit Binärrechner

  Alt 19. Jul 2005, 16:20
KarteZuDual?

wenn'd "CardinalToDual" schreibst siehts doch gleich schmucker aus </senf>
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#9

Re: Problem mit Binärrechner

  Alt 19. Jul 2005, 16:36
Hast Recht - schreibe gerade eine wrapper unit für SysUtils:

Delphi-Quellcode:
unit SysUtilsTheBarf00sWay;

interface
  
  function IntegerToString(i: integer): string;

implementation

uses
  SysUtils;

function IntegerToString(i: integer): string;
begin
  Result := IntToStr(i);
end;

end.
Magst du mir nicht ein wenig helfen?

Grüße nach Berlin
marabu
  Mit Zitat antworten Zitat
Metatron220

Registriert seit: 31. Okt 2004
33 Beiträge
 
#10

Re: Problem mit Binärrechner

  Alt 19. Jul 2005, 19:35
Vielen Dank für die Hilfe. Ich bin aber leider ein ziemlicher Anfänger un hab deshalb en paar Fragen. Leider kenne ich folgende Befehle nicht un wüsste gerne was sie bewirken:
Chr
Ord
Odd
Shr

Wär nett wenn mir da nochmal jemand helfen könnte. Vielen dank schon mal.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:12 Uhr.
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