Frage von maltiboii, 22

Dezimal zu Hexa Programm C# (Array ausgeben)?

Ich muss für die Schule ein Programm schreiben das Dezimalzahlen in Hexadezimalzahlen umrechnet. Der Code steht soweit, aber mir wird nie der ganze Array result[] ausgegeben. Habe keine Ahnung wie ich das hinbekomme, da ich relativ neu in der Programmierwelt bin. Hier mein Code:

using System;

namespace DecToHexCalc { class MainClass { public static void Main (string[] args) { Communicator communicator = new Communicator(); //Neue Instanzen der Klasse erstellen Calculator calculator = new Calculator ();

        communicator.Welcome (); //Methoden der Klassen ausführen
        calculator.ToHex ();
        calculator.Print ();
        communicator.Bye ();
        
    }
}

class Calculator
{
    public string sZahl;
    public string[] result = new string[20];

    public int count;

    public int zahl;
    public int gZahl;
    public int rest;

    public void ToHex() //umrechnen der eingegebenen Zahl in eine Hexadezimahlzahl
    {
        sZahl = Console.ReadLine ();
        zahl = Int32.Parse (sZahl);

        gZahl = zahl / 16;
        rest = zahl - (gZahl * 16);
        Transform ();

        while(gZahl > 0)
        {
            zahl = gZahl;
            gZahl = zahl / 16;
            rest = zahl - (gZahl * 16);
            Transform ();
        }

    }

    public void Transform() //ersetzen der Zahlen 10-15 durch A-F und alles zum Array Hinzufügen
    {
        count = 0;

        if (rest < 10)
        {
            result [count] = Convert.ToString (rest);
            count++;
        }
        if(rest == 10)
        {
            result[count] = "A";
            count++;
        }
        if (rest == 11) 
        {
            result [count] = "B";
            count++;
        }
        if (rest == 12) 
        {
            result [count] = "C";
            count++;
        }
        if (rest == 13) 
        {
            result [count] = "D";
            count++;
        }
        if (rest == 14) 
        {
            result [count] = "E";
            count++;
        }
        if (rest == 15) 
        {
            result [count] = "F";
            count++;
        }
    }

    public void Print() //Ausgeben des Array result[]
    {
        int c = count;

        while (c > -1) 
        {
            Console.Write (result[c]);
            c--;
        }

    }
}

class Communicator
{
    public void Welcome() //Begrüßen des Benutzers
    {
        Console.WriteLine ("Decimal to Hexa converter... v0.1");
        System.Threading.Thread.Sleep (3000);   //Just to seem professional ;)
        Console.WriteLine ("Type in any number for calculation: ");
    }

    public void Bye() //Wahl ob erneut Kalkuliert wird oder Programm beendet wird
    {
        string check;

        Console.WriteLine ();
        Console.Write ("New calculation? (y/n)");

        check = Console.ReadLine ();

        if (check == "y")
            Console.Write ("I'm currently working on that one ;) Bye");

        if (check == "n")
            Console.WriteLine ("Until next time! Bye :)");
        Console.ReadKey ();
    }
}

}

Danke im Voraus ♥

Antwort
von CrystalixXx, 16
zahl.ToString("X")

konvertiert deinen Integer in Hexadezimal. Ein Integer ist übrigens keine Dezimalzahl.

PS: count wird bei jedem Aufruf von Transform auf 0 gesetzt. Der Inhalt der Variable ist also vom letzten Aufruf von Transform abhängig.

Kommentar von maltiboii ,

Vielen Dank *.* das hat mein problem dann auch schon gelöst :) hab einfach count aus Transform() rausgenommen und einfach in der Klasse mit 0 deklariert jetzt funktioniert alles

Kommentar von xGlumi ,

Dir ist aber schon klar, dass bei solchen Schulaufgaben natürlich solche Intern mitgebrachten Funktionen verboten sind?

MFG xGlumi

Kommentar von CrystalixXx ,

Was interessieren mich seine Hausaufgaben? Ich wollte ja nicht seine Hausaufgaben machen. Ich gab ihm einen Hinweis, der unmittelbar mit seinen geschriebenem Programmcode zu tun hat.

Offensichtlich ist er auch bei seinem Code geblieben, da er feststellen konnte, dass es mit der Änderung funktioniert. Ich wüsste nicht, wo das Problem sein sollte. Doch wohl nicht, weil ich eine zusätzliche Möglichkeit genannt habe?

Keine passende Antwort gefunden?

Fragen Sie die Community