Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Umrechnen in Binär Hex und Dezimal
lena404
myCSharp.de - Member



Dabei seit:
Beiträge: 4

Themenstarter:

Umrechnen in Binär Hex und Dezimal

beantworten | zitieren | melden

Hallo Leute ,

Ich soll für die Schule im Informatik Unterricht ein Programm schreiben.

Im Programmieren bin ich ein totaler Anfänger.

Das Programm soll eine Konsol Anwendung sein, wo man ein Zahl eintippt und diese dann umrechnet wird.

Ein Beispiel wäre z.B. das ich eine Dezimal Zahl eingebe Z.b 13 und die Konsole gibt mir davon dan die Binär und Hex Zahl aus.

Das habe ichh auch geschafft.

Allerdings habe ich als weitere Aufgabe bekommen, das wenn man in die Konsole eine Binär Zahl eingibt, das in der Konsole dann die Hex und die Dezimal Zahl ausgibt.
Das gleiche sollte ich auch für die Hex Zahl machen (als ausgabe steht da die Dezimal und die Binär Zahl).

Zudem soll das Programm beendet werden, wenn man den Buchstaben "Q" in die Konsole eintippt.


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace Zahlen_umrechnen
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.Write("Geben Sie eine dezimale Zahl ein, die in verschiedene Zahlensysteme Konvertiert werden soll: ");
            if (Int32.TryParse(Console.ReadLine(), out int dezimal))
            {
                Console.WriteLine("Dezimal = " + Dezimal(dezimal));
                Console.WriteLine("Binaer = " + Binaer(dezimal));
                Console.WriteLine("Hexadezimal = " + Hexadezimal(dezimal));
            }
            else
            {
                Console.Clear();
                Console.WriteLine("Bitte geben Sie nur ganze Zahlen an.");
            }
            Console.ReadKey();
        }
 
        static string Dezimal (int dezimal)
        {
            string dezimalString = Convert.ToString(dezimal);
            string dezimalAusgabe = dezimalString;
            for (int i = dezimalString.Length -3; i ≥ 1; i-=3)
            {
                dezimalAusgabe = dezimalAusgabe.Insert(i, ".");
            }
            return dezimalAusgabe;
        }
 
        static string Binaer (int dezimal)
        {
            string binaer = "", binaerAusgabe = "";
            int binaerlaenge = 0;
            while (dezimal > 0)
            {
                binaer += dezimal % 2;
                dezimal = dezimal / 2;
            }
 
            for (int i = binaer.Length - 1; i ≥ 0; i--)
            {
                binaerAusgabe += binaer[i];
            }
 
            while(binaerAusgabe.Length % 4 != 0)
            {
                binaerAusgabe = binaerAusgabe.Insert(0, "0");
            }
             
            for(int i = 4; i ≤ binaerAusgabe.Length-5; i += 4)
            {
                binaerAusgabe = binaerAusgabe.Insert(i+binaerlaenge, " ");
                binaerlaenge++;
            }
             
            return binaerAusgabe;
        }
 
        static string Hexadezimal(int dezimal)
        {
            int zuordner, hexadezimallaenge = 0;
            string hexadezimal = "", hexadezimalAusgabe = "";
            while (dezimal > 0)
            {
                zuordner = dezimal % 16;
                switch (zuordner)
                {
                    case 0:
                        hexadezimal += "0";
                        break;
                    case 1:
                        hexadezimal += "1";
                        break;
                    case 2:
                        hexadezimal += "2";
                        break;
                    case 3:
                        hexadezimal += "3";
                        break;
                    case 4:
                        hexadezimal += "4";
                        break;
                    case 5:
                        hexadezimal += "5";
                        break;
                    case 6:
                        hexadezimal += "6";
                        break;
                    case 7:
                        hexadezimal += "7";
                        break;
                    case 8:
                        hexadezimal += "8";
                        break;
                    case 9:
                        hexadezimal += "9";
                        break;
                    case 10:
                        hexadezimal += "A";
                        break;
                    case 11:
                        hexadezimal += "B";
                        break;
                    case 12:
                        hexadezimal += "C";
                        break;
                    case 13:
                        hexadezimal += "D";
                        break;
                    case 14:
                        hexadezimal += "E";
                        break;
                    case 15:
                        hexadezimal += "F";
                        break;
                }
                dezimal = dezimal / 16;
            }
 
            for (int i = hexadezimal.Length - 1; i ≥ 0; i--)
            {
                hexadezimalAusgabe += hexadezimal[i];
            }
 
            for (int i = hexadezimalAusgabe.Length - 4; i ≥ 1; i -= 4)
            {
                hexadezimalAusgabe = hexadezimalAusgabe.Insert(i + hexadezimallaenge, " ");
                hexadezimallaenge++;
            }
 
            return hexadezimalAusgabe;
        }
    }
}

Das hier oben ist mein Code denn ich bis jetzt geschrieben habe.

Ich bedanke mich für jede Antwort die ich bekomme.

Lena
private Nachricht | Beiträge des Benutzers
Th69
myCSharp.de - Experte

Avatar #avatar-2578.jpg


Dabei seit:
Beiträge: 4191

beantworten | zitieren | melden

Hallo und willkommen,

wie soll denn unterschieden werden, wie eine Zahl interpretiert wird (als Beispiel: "10" kann sowohl binär, dezimal als auch hexadezimal interpretiert werden)?
Entweder du fragst den Anwender danach oder aber eine gängige Methode ist auch ein Präfix (0b, 0x) zu benutzen.

PS: Dein switch ließe sich auch eliminieren, wenn du einen String "0123456789ABCDEF" benutzt und darauf dann per Index zugreifst.

PPS: gerade erst gesehen - falsches Unterforum (ein Mod. wird es wohl verschieben)...
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Th69 am .
private Nachricht | Beiträge des Benutzers
lena404
myCSharp.de - Member



Dabei seit:
Beiträge: 4

Themenstarter:

beantworten | zitieren | melden

Hallo

Und danke für deine schelle Antwort.

Ich wollte das man bevor man bevor man eine Zahl eingibt ein Buchstabe eingibt der jeweils für ein Zahlensystem steht.

Also wenn man z.B. ein x eingibt soll eine Dezimal Zahl eingeben werden und diese wird dann in Binär und in Hex ausgeben werden.

Bei den anderen beiden wollte ich nach dem selben Prizip vorgehen nur das ich halt einen anderen Buchstaben benutze.
private Nachricht | Beiträge des Benutzers
Th69
myCSharp.de - Experte

Avatar #avatar-2578.jpg


Dabei seit:
Beiträge: 4191

beantworten | zitieren | melden

Ja, das entspricht dann der Präfix-Variante.
Du mußt die Eingabe von Console.ReadLine() entsprechend auswerten, also das erste Zeichen überprüfen, bevor du die Umwandlungen durchführst.
private Nachricht | Beiträge des Benutzers
Jompikumpi
myCSharp.de - Member



Dabei seit:
Beiträge: 44

beantworten | zitieren | melden

Zitat von lena404
Ein Beispiel wäre z.B. das ich eine Dezimal Zahl eingebe Z.b 13 und die Konsole gibt mir davon dan die Binär und Hex Zahl aus.

Das habe ichh auch geschafft.
Falls es um Dezimalzahlen geht, funktioniert deine Lösung auch für z.B. 13,2 oder -13?
private Nachricht | Beiträge des Benutzers
lena404
myCSharp.de - Member



Dabei seit:
Beiträge: 4

Themenstarter:

beantworten | zitieren | melden

Bei meinem Programm werden nur ganze Zahlen umgerechnet.

Je nach Eingabe in der Konsole sollen sich die Ausgabe ändern.

So soll bei einer Binären Zahl in Hex und Dezimal umgerechnet werden.
Bei einer Eingabe von einer Hex Zahl soll eine Dezimal und eine Binäre Zahl in der Konsole ausgeben werden.
Und bei einer Dezimal Zahl soll die Konsole die Hex und die Binäre Zahl ausgeben.
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von lena404 am .
private Nachricht | Beiträge des Benutzers
Jompikumpi
myCSharp.de - Member



Dabei seit:
Beiträge: 44

beantworten | zitieren | melden

Soweit ich es sehe, deckst du die natürlichen Zahlen inklusive der 0 ab. Ganze Zahlen können auch negativ sein. Und z.B. -10^-1 (=-0,1) ist eine legitime Dezimalzahl.

Meine Frage ist daher, was die Aufgabenstellung ist.

(Es ist natürlich auch möglich, dass dem Aufgabensteller das nicht ganz bewusst war )
private Nachricht | Beiträge des Benutzers
lena404
myCSharp.de - Member



Dabei seit:
Beiträge: 4

Themenstarter:

beantworten | zitieren | melden

Also ich habe dir mal den genaue Aufgabenstellung eines Lehrers hier rein gepackt:

1) Programmiere einen Dezimal Binär Hexadezimalumrechner

a)
Erstelle eine C# Konsolenanwendung.
Es soll eine Zahl (egal ob Binär, Dezimal oder Hexadezimal) eingegeben werden
können. Die Eingaben von Hexadezimal und Binär kannst Du z.B. vorher Kennzeichnen,
um sie von einander unterscheiden zu können.
Bei ungültigen Eingaben muss eine Fehlermeldung ausgegeben werden.
Die beiden anderen Formate sollen berechnet
und ausgegeben werden.

b)
Realisiere das gleiche Projekt mit WinForms
private Nachricht | Beiträge des Benutzers
Palladin007
myCSharp.de - Member

Avatar #avatar-4140.png


Dabei seit:
Beiträge: 1536
Herkunft: Düsseldorf

beantworten | zitieren | melden

CrossPost: Umrechnen in Bin�r Hex und Dezimal - C# - Die Sprache - C#- & .NET Programmierung - Entwickler-Ecke
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Palladin007 am .
private Nachricht | Beiträge des Benutzers