PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Bin in Dez in Turbo Pascal.


Gast
2004-02-05, 17:41:30
Hi,

kann mir jemand von euch mal ein bsp. Script für einen Alg. hier reinschreiben, der eine Binärzahl wie 1101 ins Dezimalsystem überträgt und dann in diesem falle 13 ausgeben würde.

Hab noch nicht so den Plan von turbo pascal, mein Prob ist:
Ich muss die Zahl ja in ihre einzelteile zerlegen, das geht meines wissen nur mit strings. Wandel ich das teil in einen string um, kann ich aber nimmer rechnen.



*help*

Ach ja, das Ding soll maximal zahlen von 15 stellen umrechnen.

BubbleBoy
2004-02-05, 18:06:00
dez:=0;
StringLaenge:=Length(Eingabe);

for i:=1 to StringLaenge do begin
y:=bin mod 10; {y enthält die jeweils letzte Stelle der Binärzahl}
dez:=dez+y*power(2, i-1);
bin:=bin div 10;
end;


"Eingabe" ist dein Eingabestring
"dez" enthält nach der Schleife deine Dezimalzahl
"bin" ist dein als Integer umgewandelter Eingabestring (geht mit 'val(...)')
"power(...)" ist zum potenzieren 2^(i-1) (weiß jetzt nicht, ob es das in TP schon gibt, ansonsten ist es für deinen einfachen Fall auch schnell selber geschrieben.

Das war es schon. Hoffe es hilft weiter.


Edit: Erläuterungen sortiert :D

Xmas
2004-02-05, 18:14:53
Irgendwie musst du die Binärzahlen ja auch eingeben, da macht sich ein String doch ganz gut.

Ein einfacher Algorithmus wäre:

Ergebnis = 0
Für jedes Zeichen im String:
- Ergebnis = Ergebnis * 2
- Ist Zeichen == '1':
--- Ergebnis = Ergebnis + 1
- Sonst
--- Ist Zeichen != '0':
----- Fehler