Autor Beitrag
Lena404
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Sa 18.09.21 21:25 
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 Konsolen-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 dann die Binär und Hex Zahl aus.

Das habe ich 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.

Den Code den ich bis hier hin geschrieben habe habe ich hier drunter gepackt.

Code Beispiel:
ausblenden volle Höhe C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
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.

Lena404

Moderiert von user profile iconNarses: C#-Tags hinzugefügt
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4700
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Sa 18.09.21 21:40 
Du hast vergessen eine konkrete Frage zu stellen.

Ich könnte jetzt über deinen Code schauen und alles mögliche unnötigerweise bemängeln das ist aber eher nicht hilfreich. Stell doch eine konkrete Frage an welchem Teilproblem du gerade hängst und dann versuchen wir weiterzuhelfen.
Palladin007
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1282
Erhaltene Danke: 182

Windows 11 x64 Pro
C# (Visual Studio Preview)
BeitragVerfasst: Sa 18.09.21 22:12 
Lena404 Threadstarter
Hält's aus hier
Beiträge: 3



BeitragVerfasst: So 19.09.21 16:26 
Ich brauche eine Lösung wie ich mit zum Beispiel einen Buchstaben, dem Programm sagen kann, das er jetzt eine Binäre Zahl eingeben wurde. Diese soll er dann in Dezimal und hex umrechnen und mir das ausgeben.

Allerdings habe ich nicht wirkliche eine Ahnung wie ich das wirklich umsetzen sollte, und ob das mit dem Code den ich bis jetzt geschrieben habe überhaupt funktioniert.

Ich hatte versucht über If Abfragen dem Code zu sagen in welche der drei Zahlensystem er mir das umrechnen soll allerdings hat das nicht so wirklich funktioniert.

Hat einer von euch so einen Code schonmal geschrieben?
ub60
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 762
Erhaltene Danke: 127



BeitragVerfasst: So 19.09.21 17:34 
Mal ein kleiner Denkanstoß:
Ich lese einen String ein und betrachte seinen ersten Buchstaben:
  • Ist es ein "Q", dann Programmabbruch.

Die ersten Buchstaben der Zahlen legst Du selbst fest (wenn es der Lehrer nicht anders gefordert hat):
  • Ist es ein d, dann ist es eine Dezimalzahl.
  • Ist es ein h, dann ist es eine Hexadezimalzahl.
  • Ist es ein b, dann ist es eine Binärzahl.

In allen drei Fällen löscht Du den ersten Buchstaben und behandelst den Rest wie oben schon für die Dezimalzahlen angegeben für das entsprechende Zahlensystem.

Das geht zwar (für Profis) alles viel einfacher, aber für Anfänger sollte der beschriebene Weg verständlich und machbar sein.
Viel Erfolg!

ub60
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4764
Erhaltene Danke: 1052

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: So 19.09.21 17:46 
Hallo nochmals,

ich hatte dir ja schon auf myCSharp.de geantwortet, aber jetzt noch mal etwas detaillierter.
Ich hatte dir ja schon geschrieben, daß du den Präfix auswerten mußt, also z.B. so
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
string line = Console.ReadLine();

int number = 0;
switch (line[0])
{
  case 'b':
    // binär
    line = line.Substring(1); // Rest der Zeile
    // number = ...
    break;

  case 'x':
    // hexadezimal
    line = line.Substring(1); // Rest der Zeile
    // number = ...
    break;

  default:
    // dezimal
    // number = ...
    break;
}

(Fehlerbehandlung habe ich noch nicht eingebaut)

Nun mußt du noch den Rest der Zeile parsen (d.h. einlesen und umwandeln). Dafür kannst du jeweils die Methode Convert.ToInt32(String, Int32) verwenden (mit 2, 10 und 16 als Zahlenbasis).

Und die Ausgabe deines bisherigen Programms kann dann so bleiben (nur daß ich die Variable number genannt habe).

Falls du nicht weiterkommst, dann poste relevanten Code und beschreibe genau, was nicht funktioniert.
Lena404 Threadstarter
Hält's aus hier
Beiträge: 3



BeitragVerfasst: So 19.09.21 21:37 
Ich bin grade relativ am verzweifeln ich brauche den Code bis morgen.

Alls was ich bis her versucht hat klappt nicht oder ich bin mir nicht sicher wie ich es weiter an gehen soll.

Der Tipp mit dem Präfix war schon mal ein guter Anfang.