Hallo zusammen,
ich sitze seit ein paar Stunden an einer Aufgabe, wo ich mir den Kopf über ein Negativitätsproblem zerbreche.
Als erstes einmal die Aufgabe:
Es sollen 2 Zahlen aus drei beliebigen Zahlen von -10.000 bis 10.000 mit dem größtem Abstand zueinander ausgegeben werden. Die erste Restriktionen ist es mit maximal 3 Vergleichsoperationen (<, >, <=, usw...) und möglichst wenigen Fallunterscheidungen (If-Bedingung) auszukommen. Es darf keine Funnktion aus der Mathe-Bibliothek genommen werden, dafür aber so viele arithmetische Operationen durchgeführt werden, wie man möchte.
Mein Code bisher:
Der Code funktioniert nur, solange sich die Zahlen im positiven Bereich bewegen. Ist eine Zahl negativ, funktioniert der Code bisher nicht. Die Lösung wäre einfach, wären da nicht die gegebenen Restriktionen. Ansonsten würde ich entweder Math.Abs() nutzen oder mir die Betragsfunktion eben selbst schnell programmieren. Dafür würde man allerdings wieder einen Vergleichsoperator benötigen (x < 0). Meine eigentliche, ich nenne es mal Muttersprache, ist C# und da hätte ich dies aufgabe mit unsigned integers gelöst. Die bietet Java aber leider nicht und versuche es irgendwie mit dem Datentyp char hinzubekommen sind gescheitert.
Hat jemand eventuell einen Tipp, der mich in die richtige Richtung schießt? Es muss eigentlich etwas mit den arithmetischen Operationen zu tun haben... aber ich komme da auf keinen Lösungsansatz.
Vielen Dank schonmal für das Reindenken in diese Kopfnuss-Aufgabe!
Gruß,
bully
ich sitze seit ein paar Stunden an einer Aufgabe, wo ich mir den Kopf über ein Negativitätsproblem zerbreche.
Als erstes einmal die Aufgabe:
Es sollen 2 Zahlen aus drei beliebigen Zahlen von -10.000 bis 10.000 mit dem größtem Abstand zueinander ausgegeben werden. Die erste Restriktionen ist es mit maximal 3 Vergleichsoperationen (<, >, <=, usw...) und möglichst wenigen Fallunterscheidungen (If-Bedingung) auszukommen. Es darf keine Funnktion aus der Mathe-Bibliothek genommen werden, dafür aber so viele arithmetische Operationen durchgeführt werden, wie man möchte.
Mein Code bisher:
Java:
public static void main(String[] args)
{
int a = -50;
int b = -20;
int c = 10;
if(a - b > a-c && a - b > b -c)
{
System.out.println("Abstand zu a= " + a + " und b= " + b + " am größten.");
}
else if(a - c > b -c)
{
System.out.println("Abstand zu a= " + a + " und c= " + c + " am größten.");
}
else
{
System.out.println("Abstand zu b= " + b + " und c= " + c + " am größten.");
}
}
Der Code funktioniert nur, solange sich die Zahlen im positiven Bereich bewegen. Ist eine Zahl negativ, funktioniert der Code bisher nicht. Die Lösung wäre einfach, wären da nicht die gegebenen Restriktionen. Ansonsten würde ich entweder Math.Abs() nutzen oder mir die Betragsfunktion eben selbst schnell programmieren. Dafür würde man allerdings wieder einen Vergleichsoperator benötigen (x < 0). Meine eigentliche, ich nenne es mal Muttersprache, ist C# und da hätte ich dies aufgabe mit unsigned integers gelöst. Die bietet Java aber leider nicht und versuche es irgendwie mit dem Datentyp char hinzubekommen sind gescheitert.
Hat jemand eventuell einen Tipp, der mich in die richtige Richtung schießt? Es muss eigentlich etwas mit den arithmetischen Operationen zu tun haben... aber ich komme da auf keinen Lösungsansatz.
Vielen Dank schonmal für das Reindenken in diese Kopfnuss-Aufgabe!
Gruß,
bully
Zuletzt bearbeitet: