Zahlensysteme umrechnen



  • Guten Tag alle miteinander,

    ich habe gerade damit angefangen C++ zu lernen, parallel dazu,
    lerne ich natürlich auch die mathematischen Grundlagen zu dem
    Ganzen und das hat mich gestern zur Umrechnung von Zahlensystemen
    geführt (sprich: Dezimal -> Dual oder Oktal oder Hexadezimal bzw.
    Oktal in Hexa, etc).

    So weit so gut, gelesen, verstanden, auf dem Papier kein Problem,
    jetzt hab ich mir allerdings gedacht, immer so doof selbst ausrechnen
    kostet zu viel Zeit, warum schreibst du dir nicht einfach ein Programm
    in C++?

    Sofort hab ich mich dran gesetzt, überlegt und drauf los gecoded 😉
    Das Ding ist nun, meine Möglichkeiten sind noch sehr beschränkt, ich
    bin gerade mal bei der "for-schleife" angekommen mit meinem C++ Wissen.
    Ich hab nun einige Stunden rumüberlegt und rumprobiert ob ich das was
    ich vorhabe damit schon realisieren kann und musste feststellen, dass das
    noch nicht geht.

    Bevor ich das Ganze allerdings noch ein paar Tage nach hinten verschiebe,
    würde ich von fortgeschritteneren Leuten gerne erfahren, ob ich das
    gewünschte Programm mit meinen derzeitigen Mitteln tatsächlich noch
    nicht realisieren kann, oder ob es geht.
    Bitte keine Codvorschläge oder sowas, mag es dann schon selber machen 😉



  • Ich denke, das Einzige was du afür brauchst sind if/else, for schleife und ggf. std::string (macht die ganze Sache einfacher). Die Umrechnung Binär/Oktal/Hexadezimal sollte damit sehr einfach zu realisieren sein. Das Umrechnen in bzw. von Dezimal ist da schon schwerer. Aber das schaffst du bestimmt auch 😉



  • Jo wenns machbar ist krieg ich das hin, danke, dann
    werd ich mich mal wieder dran machen 😉



  • Das geht mir relativ einfachen Mitteln. Wenn man ein paar Tricks anwendet, dann kann man von beliebigen Systemen wechseln mit ein paar Zeilen Code. Programmiertechnisch keine grosse Sache, aber drauf zu kommen ist ein wenig (wie meine Sekundarlehrerinn zu sagen pfelgte) tricky. 😉



  • Aber Arrays braucht man dazu nicht unbedingt oder?
    In den Hilfen bisher hieß es immer, Zahlen in ein
    Array speichern und auslesen.

    Die Arrays kommen erst bisl später 😉



  • Naja. Doch. Wäre schon gut, wenn du dich damit auskennst (man kann es z.B mir std::string machen, allerdings brauchst du da den gleichen Zugriff, wie bei Arrays, um gescheit damit arbeiten zu können für das Problem).

    Ich würd mal noch ein wenig weiter C++ lernen, ansonsten ist es eher Frust.

    Man braucht für die Lösung keine sprachspezifischen Dinge, wie Klassen, Vererbung, RTTI, Templates o.ä, sondern die Grundsachen, welche praktisch in jeder Sprache gleich sind (und dazu gehören Arrays nunmal).


  • Mod

    Falls es ohne Arrays sein soll: Man kann die Werte die man rechnet auch gleich ausgeben. Jedoch wird dann (bei der üblichen Vorgehensweise) die Ausgabe rückwärts erfolgen. Aber darüber kann man ja auch hinwegsehen. Oder man legt sich vorher auf eine gewisse Obergrenze für Werte fest, dann bekommt man (wiederum bei der üblichen Vorgehensweise) die Zahl in der richtigen Reihenfolge mit eventuellen führenden Nullen.



  • Ich bezweifle irgendwie, dass man das ohne etwas ähnliches, wie ein Array machen kann. Wie machst du denn z.B den Input? - Da fängts ja bereits mit einem String an und für den Zugriff brauchst du da wohl oder übel einen arrayähnlichen Zugriff auf die Buchstaben.


  • Mod

    drakon schrieb:

    Ich bezweifle irgendwie, dass man das ohne etwas ähnliches, wie ein Array machen kann. Wie machst du denn z.B den Input? - Da fängts ja bereits mit einem String an und für den Zugriff brauchst du da wohl oder übel einen arrayähnlichen Zugriff auf die Buchstaben.

    Ok, ich war davon ausgegangen, dass der Wert schon bekannt ist und nur noch eine Ausgabe berechnet werden soll. Wenn man natürlich mit der Dartstellung des Werts in einem bestimmten System startet, dann benötigt man arrayartigen Zugriff, ja.



  • Sofern man nicht nur vom 10er System in etwas anderes konvertieren will, brauchst du selbst wenn der Wert bekannt ist einen String (alles mit <= 10 Elementen geht natürlich auch noch so, aber das Bitgeschiebe würde ich mir nicht antun müssen ;)).


  • Mod

    drakon schrieb:

    Sofern man nicht nur vom 10er System in etwas anderes konvertieren will, brauchst du selbst wenn der Wert bekannt ist einen String (alles mit <= 10 Elementen geht natürlich auch noch so, aber das Bitgeschiebe würde ich mir nicht antun müssen ;)).

    Ich war auch von Zahlen ausgegangen, die in einem Computer nativ verarbeitet werden können. Immerhin kommt man mit Werten bis 2^64 schon ganz schön weit.

    Ok, vielleicht ein paar viele Zusatzannahmen meinerseits 😃


Log in to reply