Dezimal Dual Rechner
Guten Abend zusammen, ich versuche mich gerade innerhalb einer Weiterbildung an C ++. Der Anfang war ja noch in Ordnung aber jetzt hänge ich absolut fest. Hoffe einer von euch kann mir hier weiter helfen. Die Fragestellung unten ist mir soweit klar aber wie erweitere ich das Progarmm vernünftig so das ich ein Auswahlmenu habe und die Umrechnung mit den weiteren Basiszahlen auch funktioniert. Geht das über Switch Case , wenn ja kann mir da jemand mal ein Beispiel mit einer weiteren Basiszahl geben.
Wäre super
Gruß
Matthias
Erweitern Sie das Programm zum Umrechnen von Dezimal- in Dualzahlen aus diesem Studienheft so, dass der Anwender wählen kann, in welches Zahlenformat die
Umrechnung erfolgen soll. Damit die Umsetzung nicht zu kompliziert wird, beschränken Sie das Zielsystem für die Umrechnung auf die Basiszahl 2 bis 9 einschließlich
/* #################################################
Umrechnung vom Dezimal- in das Dualsystem
*/
#include <iostream>
using namespace std;
int main()
{
int zahl, position = 0;
das Feld zum Speichern der Reste
int reste[16];
Das Feld wird mit 0 besetzt
for (int index = 0; index < 16; index++)
reste[index] = 0;
den Wert einlesen
do {
cout << "Geben Sie den Wert ein, der umgerechnet werden soll (max. 65 535): ";
cin >> zahl;
} while (zahl > 65535);
die Schleife
do {
den Rest der Division ablegen
reste[position] = zahl % 2;
zur nächsten Position gehen
position++;
durch 2 teilen und wieder zuweisen
zahl = zahl / 2;
} while (zahl != 0);
die "Reste" von hinten nach vorne ausgeben
for (int index = 15; index >= 0; index--) {
cout << reste[index];
//alle vier Stellen fügen wir eine Leerstelle ein
if (index % 4 == 0)
cout << " ";
}
return 0;
}
Wäre super
Gruß
Matthias
Erweitern Sie das Programm zum Umrechnen von Dezimal- in Dualzahlen aus diesem Studienheft so, dass der Anwender wählen kann, in welches Zahlenformat die
Umrechnung erfolgen soll. Damit die Umsetzung nicht zu kompliziert wird, beschränken Sie das Zielsystem für die Umrechnung auf die Basiszahl 2 bis 9 einschließlich
/* #################################################
Umrechnung vom Dezimal- in das Dualsystem
*/
#include <iostream>
using namespace std;
int main()
{
int zahl, position = 0;
das Feld zum Speichern der Reste
int reste[16];
Das Feld wird mit 0 besetzt
for (int index = 0; index < 16; index++)
reste[index] = 0;
den Wert einlesen
do {
cout << "Geben Sie den Wert ein, der umgerechnet werden soll (max. 65 535): ";
cin >> zahl;
} while (zahl > 65535);
die Schleife
do {
den Rest der Division ablegen
reste[position] = zahl % 2;
zur nächsten Position gehen
position++;
durch 2 teilen und wieder zuweisen
zahl = zahl / 2;
} while (zahl != 0);
die "Reste" von hinten nach vorne ausgeben
for (int index = 15; index >= 0; index--) {
cout << reste[index];
//alle vier Stellen fügen wir eine Leerstelle ein
if (index % 4 == 0)
cout << " ";
}
return 0;
}
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 349712
Url: https://administrator.de/forum/dezimal-dual-rechner-349712.html
Ausgedruckt am: 04.04.2025 um 01:04 Uhr
6 Kommentare
Neuester Kommentar
Hallo,
du kannst das Switch-Case in deine While-Schleife verpacken.
Die Abfrage der Zahlen packst du weiterhin in deine Funktion, die du zur Berechnung verwendest (also dort die Variablen durch den Anwender füttern).
Das könnte bspw. so aussehen:
Liebe Grüße
du kannst das Switch-Case in deine While-Schleife verpacken.
Die Abfrage der Zahlen packst du weiterhin in deine Funktion, die du zur Berechnung verwendest (also dort die Variablen durch den Anwender füttern).
Das könnte bspw. so aussehen:
#include <iostream>
#include <locale>
using namespace std;
void Funktion_zur_Umrechnung_Binär_in_Dezimal()
{
//Code zur Berechnung
}
void Funktion_zur_Umrechnung_Dezimal_in_Binär()
{
//Code zur Berechnung
}
int main()
{
locale::global(locale("German"));
int eingabe = 1;
while (eingabe != 0)
{
cout << "Programm zur Umrechnung von Binär in Dezimal und umgekehrt." << endl;
cout << "Auswahlmenü:" << endl;
cout << "(1) Umrechnung Binär in Dezimal" << endl;
cout << "(2) Umrechnung Dezimal in Binär" << endl;
cout << "Eingabe:";
cin >> eingabe;
switch (eingabe)
{
case 1: Funktion_zur_Umrechnung_Binär_in_Dezimal();
break;
case 2: Funktion_zur_Umrechnung_Dezimal_in_Binär();
break;
default: cout << "Eingabe nicht erkannt/fehlerhaft!";
system("PAUSE");
return 0;
}
}
}
Liebe Grüße
Moin,
@Volchy
So war das die Aufgabe imo nicht gedacht
@Matt180
Ich verstehe das so, das du
a) noch abfragen musst, in welches Zahlensystem umgewandelt werden soll
b) überall dort wo du im Code die literale "2" verwendet, die aus a) abgefragte Variable verwenden
Deswegen auch nur 2 bis 9 - ab dem 11er System brauchst du dann zus. Buchstaben und dann wird kompliziert .)
lg,
Slainte
@Volchy
So war das die Aufgabe imo nicht gedacht
@Matt180
Ich verstehe das so, das du
a) noch abfragen musst, in welches Zahlensystem umgewandelt werden soll
b) überall dort wo du im Code die literale "2" verwendet, die aus a) abgefragte Variable verwenden
Deswegen auch nur 2 bis 9 - ab dem 11er System brauchst du dann zus. Buchstaben und dann wird kompliziert .)
lg,
Slainte
Servus,
warum nicht mal googlen und den ersten Treffer verwenden:
https://www.c-plusplus.net/forum/25830-full
ansonsten würde ich das Quellsystem immer erst in ein generelles Format umwandeln ( -> bin)
und über Case/ If Abfragen dann diese neue Bin-Zahl in das Zielsystem umwandeln
Das wäre zumindest eine Variante.
Dann wären deine Funktionen für das Zielsystem zukünftig immer:
Bin -> Dez
Bin -> Hex
Bin -> Okt
und für jedes neue System baust du dann analog
Dez-> Bin
Hex -> Bin
Okt -> Bin
Du könntest natürlich auch direkt 9 Funktionen schreiben:
Dez -> Bin
Dez -> Hex
Dez -> Okt
Bin -> Dez
Bin -> Hex
Bin -> Okt
Hex -> Bin
Hex -> Dez
Hex -> Okt
Aber ist ja mehr arbeit
Vermutlich gibt es auch weitere Wege, aber das ist ja das tolle beim Entwickeln von Applikationen, es gibt nicht DAS richtig, sondern nur verschiedene Lösungswege
Gruß
em-pie
warum nicht mal googlen und den ersten Treffer verwenden:
https://www.c-plusplus.net/forum/25830-full
ansonsten würde ich das Quellsystem immer erst in ein generelles Format umwandeln ( -> bin)
und über Case/ If Abfragen dann diese neue Bin-Zahl in das Zielsystem umwandeln
Das wäre zumindest eine Variante.
Dann wären deine Funktionen für das Zielsystem zukünftig immer:
Bin -> Dez
Bin -> Hex
Bin -> Okt
und für jedes neue System baust du dann analog
Dez-> Bin
Hex -> Bin
Okt -> Bin
Du könntest natürlich auch direkt 9 Funktionen schreiben:
Dez -> Bin
Dez -> Hex
Dez -> Okt
Bin -> Dez
Bin -> Hex
Bin -> Okt
Hex -> Bin
Hex -> Dez
Hex -> Okt
Aber ist ja mehr arbeit
Vermutlich gibt es auch weitere Wege, aber das ist ja das tolle beim Entwickeln von Applikationen, es gibt nicht DAS richtig, sondern nur verschiedene Lösungswege
Gruß
em-pie
Hallo zusammen,
@em-pie:
Es soll immer nur von Dezimal umgewandelt werde (so verstehe zumindest ich die Aufgabe).
@Matt180:
Das ist die While Schleife für Case 2
Und das wäre sie für Case 3
Und so weiter....
Habe es nicht getestet sollte aber hinkommen.
Das ganze in einer switch case Auswahl mit abfangen von falschen eingaben.
Also Praktisch am Anfang die Frage in welches Zahlensystem umgeformt werden soll.
Eingabe des Zahlensystems == Caseanweisung.
Falsche Angabe zu erneuten Eingabe auffordern.
Vielleicht auch einen Case definieren der das Programm beendet ;).
Grüße
Yai
@em-pie:
Es soll immer nur von Dezimal umgewandelt werde (so verstehe zumindest ich die Aufgabe).
@Matt180:
Das ist die While Schleife für Case 2
while (zahl > 65535);
die Schleife
do {
den Rest der Division ablegen
reste[position] = zahl % 2;
zur nächsten Position gehen
position++;
durch 2 teilen und wieder zuweisen
zahl = zahl / 2;
}
Und das wäre sie für Case 3
while (zahl > 65535);
die Schleife
do {
den Rest der Division ablegen
reste[position] = zahl % 3;
zur nächsten Position gehen
position++;
durch 3 teilen und wieder zuweisen
zahl = zahl / 3;
}
Und so weiter....
Habe es nicht getestet sollte aber hinkommen.
Das ganze in einer switch case Auswahl mit abfangen von falschen eingaben.
Also Praktisch am Anfang die Frage in welches Zahlensystem umgeformt werden soll.
Eingabe des Zahlensystems == Caseanweisung.
Falsche Angabe zu erneuten Eingabe auffordern.
Vielleicht auch einen Case definieren der das Programm beendet ;).
Grüße
Yai
@Yaimael
Für jeden Case den Code per Copy/Paste einfügen und die 2 in 3,4,5 usw ändern? Nicht so professionell, oder?
naja, ist ja Freitag heute
Für jeden Case den Code per Copy/Paste einfügen und die 2 in 3,4,5 usw ändern? Nicht so professionell, oder?
naja, ist ja Freitag heute
@SlainteMhath
Ich weiß nicht elegant aber funktioniert ;)
Soweit ich das sehe ist die Aufgabe auch noch nicht auf einen OO Aufruf hin ausgelegt von daher könnte man es schon so machen
Alternativ natürlich das ganze als Aufruf einer Methode mit Übergabe des Zahlensystems ;)
Grüße
Yai
Ich weiß nicht elegant aber funktioniert ;)
Soweit ich das sehe ist die Aufgabe auch noch nicht auf einen OO Aufruf hin ausgelegt von daher könnte man es schon so machen
Alternativ natürlich das ganze als Aufruf einer Methode mit Übergabe des Zahlensystems ;)
Grüße
Yai