Autor |
Beitrag |
Sotov
Hält's aus hier
Beiträge: 10
|
Verfasst: Mi 14.06.06 16:55
Ich möchte Dezimalzahlen in Binär umwandeln, unzwar mit einer Rekursion. Die Rekursion besteht darin, dass wenn man die Dezimalzahl durch 2 teilt, kommt etweder ein Rest oder eben keins. Wenn ein Rest kommt, dann ist es 1 wenn keins dann 0
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8:
| 117 :2 rest 1 58 :2 rest 0 29 :2 rest 1 14 :2 rest 0 7 :2 rest 1 3 :2 rest 1 1 :2 rest 1 0 :2 rest 0 |
Also Binär ist 117 : 1110101
Nur habe ich ein Problem beim Erstellen der Rekursion. Falls mir jemand helfen könnte, oder sonst irgendwelche Tipps für mich parat hat...
Danke im Voraus
|
|
DelphiAnfänger
      
Beiträge: 112
Win XP, Firefox 2.0, IE6
Delphi 5 Prof., Delphi 2005 PE
|
Verfasst: Mi 14.06.06 17:01
deine rechnug ist falsch!
dezimal: 127
binär: 1111111
binär: 1110101
dezimal: 75
EDIT ich hatte noch ne null drangehängt  (11101010 ist 234)
Zuletzt bearbeitet von DelphiAnfänger am Mi 14.06.06 17:23, insgesamt 1-mal bearbeitet
|
|
BenBE
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: Mi 14.06.06 17:09
@DelphiAnfänger: eine 7-bit-Binärzahl kann nicht größer als 127 sein. Zumal dann nicht, wenn Du so rechnest, wie Du's gezeigt hast. 1110101 = 64 + 32 + 16 + 4 + 1 = 117
Zum Thema Rekursion:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8:
| Function Rekurse(Number: Integer; BitCount: Integer): String; const Digits = '01'; Begin If Bitcount = 0 Then Result := '' else Result := Digits[(Number shr (BitCount - 1)) and 1] + Rekurse(Number and (1 shl BitCount) - 1, Bitcount - 1); end; |
Ist eine von vielen Rekursiven Möglichkeiten ...
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
Narses
      

Beiträge: 10183
Erhaltene Danke: 1256
W10ent
TP3 .. D7pro .. D10.2CE
|
Verfasst: Mi 14.06.06 17:13
Moin!
Mein Vorschlag:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| procedure TForm1.Button1Click(Sender: TObject);
function DezToBin(Value: Integer): String; begin if (Value > 1) then Result := DezToBin(Value div 2) +Char( (Value mod 2) +48) else Result := Char( (Value mod 2) +48); end;
begin Edit2.Text := DezToBin(StrToIntDef(Edit1.Text,0)); end; |
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
Phantom1
      
Beiträge: 390
|
Verfasst: Mi 14.06.06 17:18
Noch ein Vorschlag ;O)
Delphi-Quelltext 1: 2: 3: 4: 5:
| function DezToBin(Dez: LongInt): string; begin if Dez>0 then Result:=DezToBin(Dez Div 2)+IntToStr(Dez Mod 2); end; |
|
|
Narses
      

Beiträge: 10183
Erhaltene Danke: 1256
W10ent
TP3 .. D7pro .. D10.2CE
|
Verfasst: Mi 14.06.06 17:20
@ Phantom1:
DezToBin(0)
Abgesehen davon ist das meine Lösung...
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
Sotov 
Hält's aus hier
Beiträge: 10
|
Verfasst: Mi 14.06.06 17:26
Danke für eure Hilfe. Ich versuche jetzt, obwohl eure Vorschläge enthalten sehr viele mir unbekannte Sachen, wie zb DezToBin was wir bestimmt nicht verwenden dürfen, weil wir es noch gar nicht hatten... oder const Digits = '01' oder shr ...
Gibt es nicht eine ganz einfache Lösung?
|
|
Narses
      

Beiträge: 10183
Erhaltene Danke: 1256
W10ent
TP3 .. D7pro .. D10.2CE
|
Verfasst: Mi 14.06.06 17:30
Moin!
 Hua... Ganz blutiger Anfänger...
Sotov hat folgendes geschrieben: | obwohl eure Vorschläge enthalten sehr viele mir unbekannte Sachen, wie zb DezToBin |
Öhm, das ist die Funktion, die du schreiben wolltest, das ist also beabsichtigt neu.
Sotov hat folgendes geschrieben: | weil wir es noch gar nicht hatten...
[...]
Gibt es nicht eine ganz einfache Lösung? |
Mach mal ein paar Anfänger-Tutorials oder frag deinen Lehrer und pass mal besser im Unterricht auf.  Wenn ihr schon bei Rekursion seid, dann hast du nicht erst seit gestern Informatik.  Oder?
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
Sotov 
Hält's aus hier
Beiträge: 10
|
Verfasst: Mi 14.06.06 17:36
Leider habe ich einen behinderten Lehrer, der absolut gar nix erklärt und eigentlich nur will das wir uns selbder überlegen. Aber wenn keine Grundkenntnise vorhanden sind, können wir uns gar nichts so richtig alles selber überlegen.
Ich habe Informatik seit einen halben Jahr und wir sind schon bei Rekursion!
Nun gut. Ich versuche es jetzt! Obwohl ich glaube nicht, dass es klappt!
Vielen Dank für die Hilfe!
|
|
GTA-Place
      

Beiträge: 5248
Erhaltene Danke: 2
WIN XP, IE 7, FF 2.0
Delphi 7, Lazarus
|
Verfasst: So 25.06.06 08:51
Scheint eine sehr soziale Schule zu sein, wenn die sogar behinderte Lehrer einstellen  .
_________________ "Wer Ego-Shooter Killerspiele nennt, muss konsequenterweise jeden Horrorstreifen als Killerfilm bezeichnen." (Zeit.de)
|
|