Kontrollstrukturen

Kathi3210

Mitglied
Hallo,
ich stehe bei der folgenden Aufgabe etwas auf dem Schlauch...
vielleicht kann mir jemand helfen, wäre nett...danke:)

Schreiben Sie ein Java Programm, bei dem der Benutzer drei int-Werte a, b und c eingibt.
Sortieren Sie diese Werte mittels if-Abfragen so, dass a < b < c gilt. Geben Sie am Schluss
die Werte von a, b und c aus. Prüfen Sie Ihr Programm mit den sechs möglichen
Permutationen der Zahlen 1, 2, 3 – Ihr Programm muss in allen Fällen „1, 2, 3“ ausgeben.
Hinweis: da höchstens drei Vertauschungen erforderlich sind, genügen drei if-Abfragen!
 
S

SlaterB

Gast
kannst du irgendwas beitragen,
allein die Eingabe + Ausgabe,
allein die Variablendeklaration,
eine Klassendefinition?..
 

Kathi3210

Mitglied
Java:
int a;
int b; 
int c;

if(a>b>c) 
if(a<b>c)
usw.
mache ich das mit true und false?

ich weiß ehrlich gesagt nicht, wie ich das sortieren soll...
wie gesagt, ich hab eigentlich gar keinen plan...
 
S

SlaterB

Gast
du kannst immer nur zwei Werte vergleichen und dann diese vertauschen,
fange damit an, a und b zu vergleichen und gegebenenfalls zu vertauschen, danach überlege weiter was noch nötig ist

> mache ich das mit true und false?

mache doch einfach 10 oder 20 Dinge, schaue dir die Fehlermeldungen an usw.,
wenn du einzelne Vergleiche noch nicht kennst, dann übe die vorher in separaten Problemen,
denke nicht gleich über drei Variablen gleichzeitig nach, 2 statt 3 sind schon einfacher
 

Kathi3210

Mitglied
Java:
int a;
int b;
int c;

if((a<b)&(b<c)&(a<c))

also quasi erst mal so?
aber wie kann ich das dann auf 1, 2 und 3 übertragen?
 

Plopo

Bekanntes Mitglied
Wie wäre es, wenn du den variablen die Werte zuordnest?

a=2
b=3
c=1

Da aber in der Aufgabe steht "bei dem der Benutzer drei int-Werte a, b und c eingibt" musst du wohl per "Scanner" Klasse die Tastatureingabe den Variablen a-c zuweisen.

Hier ist die Doc für die Klasse

PS: Wenn a<b und b<c muss du nicht mehr a<c abfragen ;D
 
Zuletzt bearbeitet:
S

SlaterB

Gast
@Kathi3210
vergiss vorerst wirklich 3 Variablen, denke nur an 2, verschaue diese beiden
 

Kathi3210

Mitglied
Hinweis: da höchstens drei Vertauschungen erforderlich sind, genügen drei if-Abfragen!


aber was ist dann die dritte if- Abfrage?^^
und der Benutzer soll ja die werte eingeben, wie gebe ich dann die Werte aus??...
 
S

SlaterB

Gast
siehe auch mein Posting zwischendurch

> aber was ist dann die dritte if- Abfrage?^^
das ist was kompliziertes, von dem du noch sehr weit entfernt bist, versuche dich vorher an einfachen Dingen

> wie gebe ich dann die Werte aus??...
immer aller aller ersten Hello Wold-Programm lernt man schon die Ausgabe


> also a = InputTolls.readInteger()
> b = ....

nicht genauso?
InputTolls oder InputTools kennt hier übrigens niemand, dazu kann dir keiner was sagen
 
S

SlaterB

Gast
Benutzereingaben einlesen ist wahrlich kein gutes Kapitel in Java, und ist zum Testen sowieso schlecht, man müsste ständig tippen,
programmiere lieber alles erstmal mit im Quellcode vorgegebenen Werten

zur Ausgabe gibt es mehr als System.out.println() kaum zu sagen

------

ich empfehle zum Einlesen nur ganze Zeilen zu lesen und dann im Programm weiterzuverarbeiten
Lesen von der Konsole
aber das dürfte sich mit deinen InputTools beißen
 

Kathi3210

Mitglied
Also ich hab da jetzt so ne art lösung, die auch funktioniert, aber ist das nicht zu einfach?

Java:
public class Kontrollstrukturen{
public static void main (String[]args){
int a = 1;
int b = 3;
int c = 2;

if ((a<b)&(b<c)) System.out.println(a+","+b+","+c);
else System.out.println("Fehler")
}
}
 
S

SlaterB

Gast
dein hauptsächliches Problem dürfte sein, dass es nicht der Aufgabenstellung entspricht,
du sollst die Werte sortieren, Variableninhalte gegebenenfalls vertauschen,
am Ende die Variablen genau in Reihenfolge ausgehen, weil sie dann sortiert sein sollen

wiederholte Tipps:
- dein ganzes Programm sollte kein & (oder sowieso den richtigen Operator &&) enthalten, in jedem if nur ein Vergleich zweiter Werte

- fange mit nur zwei Werten an, a und b,
ich werde nun zu keinem Posting mehr antworten in denen a, b und c auftauchen
solange nicht zu a und b eine annehmbare Lösung besprochen wurde

-----

im übrigens schon schön dass es ein vollständiges Programm mit Klasse, Variablendeklaration, Beispielwerten und einer gewissen Ausgabe geworden ist, ein guter Anfang
 
Zuletzt bearbeitet von einem Moderator:

qowaz

Mitglied
Nein, deine Lösung ist falsch...du sortierst die Werte nicht sondern gibts einfach einen Fehler aus falls die Bedingung nicht gilt.
Nehmen wir an a=3, b=2, c=1. Es soll gelten a<b<c, was im Moment nicht der Fall ist.
Also musst du die Werte sortieren. Dazu nimmst du am besten eine Hilfsvariable names temp und gehst z.B. wie folgt vor:

Java:
if(a>b){
  temp = a;
  a = b;
  b = temp;
}

Somit wäre a=2 und b=3, damit gilt schon mal a<b. Das ganze machst du jetzt entsprechend noch für c.
 
S

SlaterB

Gast
nur a und b ist nun geklärt..

> Das ganze machst du jetzt entsprechend noch für c.

wobei es nun spannend ist, mit was c zu vergleichen ist, bisschen ausprobieren schadet nicht,
vielleicht hilft dabei der Hinweis aus der Aufgabenstellung: "da höchstens drei Vertauschungen erforderlich sind, genügen drei if-Abfragen!"

drei einzelne ifs, mit jeweils einem Vergleich, jeweils einer Vertauschung, kein &&, keine Ausgabe im if, oder sonstige Kapriolen,
ein if ist gefunden, zwei ähnliche noch dazu
 

qowaz

Mitglied
Es ist vllt auch hilfreich wenn du erst einmal auf einem Blatt Papier die verschiedenen Möglichkeiten notierst und durchspielst.
 

Kathi3210

Mitglied
ich hab das jetzt mal rausbekommen, aber da wird bei println n fehler angezeigt

Java:
int a;
int b;
int c;

int temp;
if(a>b)
{

temp=a;
a=b;
b=temp;
}
if(b>c)
{

temp=b;
b=c;
c=temp;
}
if(a>b)
{

temp=a;
a=b;
b=temp;
}
printf(,a,b,c);
 
Zuletzt bearbeitet von einem Moderator:
S

SlaterB

Gast
println taucht in deinem Code gar nicht auch,

[c](,[/c] kann nie etwas sinnvolles sein

früher hattes du doch schon
> System.out.println(a+","+b+","+c);
ist das so schwer?

die drei Tausche sind aber gut
 

Kathi3210

Mitglied
System.out.println meint ich eigentlich.... da wird jetzt a, b und c angestrichen
aber wie soll ich das programm mit den 6 möglichen permutationen von der zahlen 1,2,3 prüfen? ich kann ja nicht einfach 6x a=... b=--- und c=... hinschreiben
 
S

SlaterB

Gast
poste den gesamten Code,
und du sollst letzlich eine Benutzereingabe einbauen und 6x verschiedene Dinge eintippen,
du hattest hoffentlich schon vorher Programme mit Eingaben von Zahlen?
 

Neue Themen


Oben