Informatiker Board (http://www.informatikerboard.de/board/index.php)
- Themengebiete (http://www.informatikerboard.de/board/board.php?boardid=1)
--- Praktische Informatik (http://www.informatikerboard.de/board/board.php?boardid=6)
---- Algorithmen (http://www.informatikerboard.de/board/board.php?boardid=17)
----- Sortieren (http://www.informatikerboard.de/board/thread.php?threadid=3764)


Geschrieben von InformatikJava12 am 06.11.2017 um 11:34:

  Sortieren

Hallo,
es geht um folgende Aufgabe

Schreiben Sie ein Programm in Java, welches drei Zahlen einliest und diese anschließend in sortierter Reihenfolge ausgibt. Verwenden Sie dazu bedingte Verzweigungen. Die drei Variablen selbst dürfen nur mit den entsprechenden Werten initialisiert und anschließend nicht mehr verändert werden (verwenden Sie bei der Deklarierung das Schlüsselwort final). Zusätzliche Variablen sind ebenfalls nicht erlaubt!

Das Einlesen müsste kein Problem sein. Da nichts angeben ist würde ich die 3 Variablen als double einlesen lassen. Wie ist dann die Idee. Ich würde normalerweise immer die eine Zahl mit der anderen vergleichen aber dazu bräuchte ich doch eine neue Variable. Wie kann ich das umgehen?



Geschrieben von as_string am 06.11.2017 um 13:39:

 

Hallo!

Wie ist denn z. B. die korrekte Reihenfolge, wenn die Bedingung
code:
1:
(a < b && b < c)
erfüllt wäre? Könntest Du auch für die anderen möglichen Reihenfolgen Bedingungen formulieren? Wieviele Reihenfolgen (Permutationen) gibt es denn bei 3 Zahlen?

Gruß
Marco



Geschrieben von InformatikJava12 am 06.11.2017 um 15:43:

 

Zitat:
Original von as_string
Hallo!

Wie ist denn z. B. die korrekte Reihenfolge, wenn die Bedingung
code:
1:
(a < b && b < c)
erfüllt wäre?
Marco


Die Reihenfolge wäre dann a,b,c.
Es gäbe 3!=6 Permutationen.

Dein Beispiel würde ich dann mit der if-Bedingung implementieren:
Also
code:
1:
2:
3:
if(a < b && b < c) {
    System.out.println(a + b +c);
}

oder?

[as_string: ich hab noch code-Tags um den Quelltext gemacht und etwas eingerückt, so ist es besser lesbar, ist das so OK?]



Geschrieben von as_string am 06.11.2017 um 16:48:

 

Genau. Ich würde zwar die Ausgabe vielleicht noch etwas überarbeiten, aber prinzipiell genau so. Ich würde einfach mit if.. else if ... else if ... etc. alle 6 Fälle abfrühstücken und gut ist, oder?

Gruß
Marco

PS: Da a, b und c ja Zahlen sind, wird Deine Ausgabe die Summe aus allen ausgeben (wenn überhaupt ein String draus wird und das nicht gleich einen Syntaxfehler ergibt?) Das musst Du noch anders machen, weil die Summe ja auch immer dieselbe wäre...



Geschrieben von InformatikJava12 am 06.11.2017 um 23:21:

 

Dankeschön Daumen hoch smile
D.h als Ausgabe muss ich schreiben.
System.out.println("a" + "b"+"c") oder?



Geschrieben von as_string am 06.11.2017 um 23:26:

 

So konkatinierst Du nur die Strings "a", "b" und "c" zu "abc". Du willst doch aber die Zahlen ausgeben, also die Zahlenwerte von a, b und c zu Strings wandeln und diese eventuell noch mit Kommata getrennt o. ä. ausgeben, oder?
Im Zweifelsfall: Probiers doch einfach aus! Schreib das Programm und schau Dir an, was es ausgibt!

Gruß
Marco



Geschrieben von InformatikJava12 am 07.11.2017 um 09:02:

 

D.h ich mach es fallspezifisch. Also für den Fall: a>b, b>c
Dann also system.out.println(c);
Sy......(b);
Sy......(a);
In jedem Fall dann anders. Geht das so?



Geschrieben von as_string am 07.11.2017 um 14:55:

 

Probiers doch einfach mal aus. Compiliert der Code? Macht er, was er soll?

Gruß
Marco



Geschrieben von InformatikJava12 am 07.11.2017 um 20:20:

 

code:
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:
import java.io.*;
 public class Sotierer {
 public static void main( String[] args) throws IOException{
 final int x,y,z; 
BufferedReader ein = new BufferedReader(new InputStreamReader(System.in)); System.out.println("Gib eine Zahl ein");
 x= Integer.parseInt(ein.readLine()); 
System.out.println("Gib noch eine Zahl ein");
 y= Integer.parseInt(ein.readLine()); 
System.out.println("Gib noch eine Zahl ein");
 z= Integer.parseInt(ein.readLine());
 if(x < y && y < z) {
 System.out.println(x); 
System.out.println(y);
 System.out.println(z); }
 else if( x < z && z < y) {
 System.out.println(x);
 System.out.println(z);
 System.out.println(y); }
 else if( y<z && z<x) {
 System.out.println(y);
 System.out.println(z);
 System.out.println(x); }
 else if( y < x && x < z) {
 System.out.println(y);
 System.out.println(x);
 System.out.println(z); }
 else if( z < x && x < y) {
 System.out.println(z);
 System.out.println(x);
 System.out.println(y); }
 else if( z < y && y < x) { 
System.out.println(z);
 System.out.println(y); 
System.out.println(x); } } }


So habe ich das gemacht. Kann man das optimieren?


Forensoftware: Burning Board, entwickelt von WoltLab GmbH