Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
[HILFE!]Dezimalzahl Umwandler in frei wählbares Zahlensystem
Hi Leute ich brauche eure Hilfe, habe folgendes Problem:
a. Schreibe ein Programm, das eine Zahl im Dezimalsystem (Zahlenbereich: LongInt) umwandelt in ein frei wählbares Zahlensystem von 2 bis 16. (6. Klasse Seite 37).
b. Schreibe ein Programm, das Zahlen in den Zahlensystemen 2 bis 16 ins Dezimalsystem umwandelt.
und hier noch ein code beispiel, dass ausschliesslich duale in andere systeme umrechnet und somit schonmal teilaufgabe b für dich ansatzweise löst. Über den rest musst du dir selber nen kopf machen. wie gesagt ist etwas
aufwendig.
ich hab versucht den code mal von Herrn/Frau Zeihe zu kommentieren.
Code:
import java.io.*;
/*
Umrechnung von dualen in oktale, dezimale o. hexadezimale Zahlen.
Author: Jana Zeihe
*/
public class Zahlensysteme
{
public static void main (String[]args)
throws IOException
{
int i=0;
int zahl;
int basis; // Stellt das auszuwählende Zahlensystem dar (Basis 10 wäre Dezimalsystem)
int r[] = new int [10];
int ausgabe=0;
int exp=1;
int j=2;
// Init des Eingabemodus
BufferedReader din = new BufferedReader(
new InputStreamReader(System.in));
System.out.println("Geben Sie eine Zahl zur Basis 2 ein.");
zahl = Integer.parseInt(din.readLine());
System.out.println("Geben Sie eine Basis ein.");
basis = Integer.parseInt(din.readLine());
//Dual->Dezimal
while (zahl>0)
{
i++;
r[i]=zahl%10;
zahl=zahl/10;
}
while (j<=i)
{
exp=exp*2;
ausgabe=ausgabe+(r[j]*exp);
j++;
}
ausgabe=ausgabe+r[1];
if (basis==10)
System.out.print("Die Zahl lautet: " + ausgabe);
//Anscheinend ist hier die Basis Egal also Dual in x-beliebiges Zahlensystem
else
{
zahl=ausgabe;
i=0;
while (zahl>0)
{
i++;
r[i]=zahl%basis;
zahl=zahl/basis;
}
System.out.print("Die Zahl lautet: ");
//Berechnung Dual->Hexadezimal
for (int k=i; k>0; k--)
{
if ((basis==16) && (9<r[k]) && (r[k]<16))
{
switch (r[k])
{
case 10: System.out.print("A"); break;
case 11: System.out.print("B"); break;
case 12: System.out.print("C"); break;
case 13: System.out.print("D"); break;
case 14: System.out.print("E"); break;
case 15: System.out.print("F"); break;
}
}
else
System.out.print(r[k]);
}
}
}
}
Ich habe den code nicht getestet. Ich hoffe dir zumindest einen ansatzpunkt geben zu können. Die Zeit habe ich nicht deine aufgabe zu lösen
Danke dir auf jeden Fall, der Ansatz an sich ist ja nicht das Problem, sondern das Coding an sich :/
Schade, dass du nicht genug Zeit hast, ist aber verständlich! gegoogelt habe ich ja, aber spezifisch zu diesem Problem gefunden habe ich leider nichts!
Na vl. erbarmt sich ja doch noch jemand meinereiner
Um gottes willen, nicht so viel Code für was, was in Java mit einer kleinen Zeile gelöst werden kann.
Jungs, viel einfacher. Die Methodennamen sagen, in welcher Richtung umgewandelt wird.
Schaut sonst auch noch mal in der API Dokumentation nach parseLong und Radix. Radix sagt das Zahlensystem an, zum Beispiel 2 (Binär), 8 (Oktal), 10 (Dezimal) und 16 (Hex).
Schaut hier: