AGB  ·  Datenschutz  ·  Impressum  







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

Programm für Octalzahlen in Dezimalzahlen

Ein Thema von SirMaurice · begonnen am 7. Dez 2018 · letzter Beitrag vom 11. Dez 2018
Antwort Antwort
gammatester

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

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
SirMaurice

Registriert seit: 7. Dez 2018
Ort: Berlin
16 Beiträge
 
Delphi 5 Enterprise
 
#2

AW: Programm für Octalzahlen in Dezimalzahlen

  Alt 9. Dez 2018, 20:36
Danke für die Hilfe. Ich muss noch mal kurz erwähnen, dass mir einige Bezeichnungen unbekannt sind. Ich werde mal nachlesen was diese machen.

Ich wollte tatsächlich eine zweite Unit für die Rechnung erstellen, mein Lehrer meinte jedoch, dass ich dies nicht tun soll.

Vielen Dank nochmal.

Geändert von SirMaurice ( 9. Dez 2018 um 20:38 Uhr) Grund: Erweiterte Antwort
  Mit Zitat antworten Zitat
gammatester

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

AW: Programm für Octalzahlen in Dezimalzahlen

  Alt 9. Dez 2018, 20:57
Danke für die Hilfe. Ich muss noch mal kurz erwähnen, dass mir einige Bezeichnungen unbekannt sind. Ich werde mal nachlesen was diese machen.
Oft gibt es ja mehrere Möglichkeiten. ZB kann man für die Umwandlung des Oktalzeichens auch d := strtoint(c) schreiben, was vielleicht bekannter ist.
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
3.094 Beiträge
 
Delphi 12 Athens
 
#4

AW: Programm für Octalzahlen in Dezimalzahlen

  Alt 10. Dez 2018, 21:27
Zitat von gammatester:
Hier noch Tip, der wichtiger ist als schöne Formatierung (die nicht vor Logik-Fehlen schützt)
Ja und nein: natürlich schützt schöne Formatierung nicht vor Logikfehlern, sie erleichtert aber oft das Aufspüren solcher Fehler, da sich Dinge dann einfach leichter lesen lassen.

Und zum Case, falls deine kaskadierenden ifs so etwas umsetzen sollten noch ein kurzes Beispiel:

Delphi-Quellcode:
var
  c : Char;
begin
  case c of
    'a': Aufruf1;
    'b': Aufruf2;
    'c'..'e': Aufruf3;
    else
      Aufruf4;
  end;
end;
Dabei ist Aufruf1 bis Aufruf4 jeweils eine Prozedur/Methode oder Funktion die du aufufen möchtest.
'c'..'e' bedeuitet, dass dieser Fall für c, d und e gilt und der else Zewig wird für alle Fälle abgedeckt
in denen c nicht im bereich a-e liegt.
  Mit Zitat antworten Zitat
Antwort Antwort

 

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 22:44 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz