Einzelnen Beitrag anzeigen

gammatester

Registriert seit: 6. Dez 2005
999 Beiträge
 
#8

AW: Programm für Octalzahlen in Dezimalzahlen

  Alt 9. Dez 2018, 19:01
Die Rückwärtszählung war in der Aufgabe enthalten.
Na dann mal die Basisfunktion mit korrekter Implementation Deiner Methode. Ich habe Position in Potenz umbenannt, weil das die adäquate Bezeichnung ist und nicht so irreführend wie Positiion.
Delphi-Quellcode:
{-----------------------------------------------------------}
function oct2dec(const os: string): cardinal;
  {-Umwandlung des Strings os, der eine Oktalzahl enthält, in eine Dezimalzahl}
var
  Ergebnis, Potenz: cardinal;
  i: integer;
  d: byte;
  c: char;
begin
  Potenz := 1;
  Ergebnis := 0;
  for i:=length(os) downto 1 do begin
    {Umwandlung nächste Oktalziffer in Dezimalvariable d}
    c := os[i];
    if c in ['0'..'7'] then d := ord(c)-ord('0')
    else begin
      {Fehlerbehandlung: hier}
      ShowMessage(c+' ist keine gültige Oktalziffer');
    end;
    {Aufsummieren}
    Ergebnis := Ergebnis + Potenz*d;
    {nächste Achter-Potenz}
    Potenz := Potenz*8;
  end;
  oct2dec := Ergebnis;
end;
Dies kannst Du in Dein Programm einbauen und rufst die Funktion zB mit dez := oct2dec(EOct.Text) auf.

Hier noch Tip, der wichtiger ist als schöne Formatierung (die nicht vor Logik-Fehlen schützt): Versuche die Berechungen von der Oberfläche/Eingabe/Ausgabe zu trennen. Dann ist die Routine allgemein einsetzbar und hängt nicht von Deinen Editfeldern ab (in der Funktion oben sollte man deshalb besser einen Fehlercode liefern oder ein Exception werfen.)

Geändert von gammatester ( 9. Dez 2018 um 19:22 Uhr) Grund: 9 -> 7
  Mit Zitat antworten Zitat