Aufgaben

animeLoan

Mitglied
Hey Leute,
ich bin leider eine volle Niete und muss 3 programme schreiben, und Struktogramme erstellen. Ich kann es einfach nicht, könnt ihr mir helfen? Ich bräuchte nur ein Lösungansatz: Hier die Aufgaben
1.
Schreiben Sie ein Programm, das zwei verschiedene ganze Zahlen a und b einliest und
die größere von beiden Zahlen auf dem Bildschirm ausgibt. Wenn beide Zahlen gleich
groß sind, wird diese Zahl ausgegeben.
2.
Schreiben Sie ein Programm, das 3 verschiedene ganze Zahlen a,b,c einliest und die
größte Zahl von diesen 3 Zahlen auf dem Bildschirm ausgibt.
3.
chreiben Sie ein Programm Median, das 3 verschiedene ganze Zahlen a,b,c einliest
und den mittleren der drei Werte ausgibt. Damit ist nicht der arithmetische Mittelwert
(a+b+c) / 3 gemeint. Denken Sie sich a, b und c der Größe nach geordnet. Das
Programm gibt den Wert aus, der dann in der Mitte steht.

Wäre echt toll, wenn ihr mir ein Lösungsvorschlag vorstellen könnt.
 

Jw456

Top Contributor
Dann Fange doch mal an nachzudenken in der Aufgabe steht es soll was eingegeben werden.
Mit was ist es den möglich eine Eingabe zumachen?

Das ist eine Hausaufgabe die sollst du schon selber machen wir können dir vielleicht dabei helfen wenn du uns genau sagst wo du nicht weiter kommst.

Bis jetzt haben wir von einem Lösungsversuch noch nichts gesehen.
 

Robertop

Bekanntes Mitglied
Also als allerersten Anstatz könntest du einfach in der Main Methode mithilfe von einem Scanner zwei Eingaben hintereinander einlesen. Danach kannst du mit einer einfachen If-Abfrage überprüfen, ob die erste Eingabe größer ist als die zweite, und wenn ja, diese Ausgeben. Wenn nicht, dann gibst du die andere aus.

So, wie die Aufgaben gestellt sind, wird wahrscheinlich darauf abgezielt, dass man das fertige Programm aus 1. dann erweitert, sodass 2. gelöst ist. Bei Aufgabe 3. steht dann ja sogar drin, dass man die Eingegebenen Werte sortieren und dann den mittleren nehmen kann.
 

mihe7

Top Contributor
Ich bräuchte nur ein Lösungansatz
Naja, die Aufgaben sind so konzipiert, dass sie den Lösungsansatz unmittelbar enthalten.

Schreiben Sie ein Programm, das zwei verschiedene ganze Zahlen a und b einliest und
die größere von beiden Zahlen auf dem Bildschirm ausgibt. Wenn beide Zahlen gleich
groß sind, wird diese Zahl ausgegeben.
Programm:
1. Lies ganze Zahlen a und b ein.
2. Falls a größer als b ist, gib a aus.
3. Falls b größer als a ist, gib b aus.
4. Falls a gleich b ist, gib a aus.

Das würde die Aufgabe lösen, die Fallunterscheidungen sind aber etwas umständlich. Man kann sich überlegen, dass für den Fall, dass a > b nicht gilt, offensichtlich a <= b gelten muss. D. h. die Zeilen 2 bis 4 kann man zusammenfassen:

Programm:
1. Lies ganze Zahlen a und b ein.
2. Falls a größer als b ist, gib a aus sonst gib b aus.

Jetzt enthält 1. noch zwei Schritte auf einmal, die wir noch trennen:
1. Lies ganze Zahl a ein.
2. Lies ganze Zahl b ein.
3. Falls a größer als b ist, gib a aus sonst gib b aus.

Das kannst Du 1:1 in ein Struktogramm übertragen und bist diesbezüglich schon mal fertig. Außerdem musst Du jeden der Punkte nur noch als Java-Code formulieren, dann hast Du auch das erledigt.
 

animeLoan

Mitglied
Sorry, bei der zweiten Aufgabe hab ich halt schon mal das, aber ich weiß nicht wie ich diese Bedingung rein mache, funktioniert nur gibt er mir die zwei größten aus.

import java.util.Scanner;
public class median_b {
public static void main(String[] args) {
System.out.print("Geben sie die erste Zahl ein: ");
int a = (new Scanner(System.in)).nextInt();
System.out.print("Geben sie die zweite Zahl ein: ");
int b = (new Scanner(System.in)).nextInt();
System.out.print("Geben sie die dritte Zahl ein: ");
int c = (new Scanner(System.in)).nextInt();
if (a > b) {
if (a >= c) {
System.out.println("Die größte Zahl ist:" + a);
} else {
System.out.println("Die größte Zahl ist:" + c);
}
}
if (a < b) {
System.out.println("Die größte Zahl ist:" + a);
} else {
System.out.println("Die größte Zahl ist:" + b);
}
if (a == b);

if (a < b){
System.out.print("Die größte Zahl ist: " + b);
}
}
}
 
Zuletzt bearbeitet:

Jw456

Top Contributor
Java:
if (a<b || a>b || a==b)
nicht allles auf einmal prüfen
es gibt auch noch das "else" beim "if"

also wenn a>b true ist sollst du b ausgeben
wenn nein " else" prüfe weiter
 

animeLoan

Mitglied
wir haben hier noch was gegeben:
tip: vergleichen Sie zuerst die Eingabe a mit Eingabe b (if Block). Was ist, wenn
1.) a größer ist als b
2.) a kleiner ist als b
3.) a gleich b ist
Dann muss man in die if Blöcke für 1.), 2.) und 3.) weitere if Blöcke
„hineinschachteln“.
Beispiel: angenommen a ist größer als b (1. Fall von oben). Dann müssen Sie in diesen
if Block folgende weitere if Blöcke einschachteln:
- ist a größer oder gleich c? Wenn ja, dann ist a die größte Zahl.
- wenn a kleiner als c ist, dann ist c die größte Zahl, denn a ist ja bereits
größer als b.
if (a > b) {
if (a > = c) {
System.out.println(ʺDie größte Zahl ist: ʺ + a);
} else {
System.out.println(ʺDie größte Zahl ist: ʺ + c);
}
}
if (a < b) {
...
}
if (a == b) {
...
}
So muss man sich für die Fälle 2.) und 3.) überlegen, welche if Blöcke man hier
hineinschachteln muss.

aber ich bin verwirrrt, gibt es auch eine nicht so lange variante
 

KonradN

Super-Moderator
Mitarbeiter
nur gibt er mir die zwei größten aus.
Ja, das liegt einfach daran, dass Du die Bedingungen falsch gemacht hast.

Du prüfst erst ob a > b ist. Wenn dies der Fall ist, dann prüfst du das größere von beidem mit c.

Dann prüfst Du auf a < b und hast da dann ein else Zweig. Wenn a>b war, dann wird er bei dem if von Dir auch rein gehen - halt in den else zweig dort.

Dein Fehler ist also, dass Du den Aufbau nicht richtig gesehen und verstanden hast:

Du hast immer ein äußeres if ohne else um dann in dem Block des if ein weiteres if mit einem else zu haben!

aber ich bin verwirrrt, gibt es auch eine nicht so lange variante
Ja, überlege Dir einfach, was Du machen würdest, um die größte Zahl von mehreren Zahlen zu ermitteln. Egal wie vielen.

Du nimmst die erste Zahl als temporäres Maximum.
Die vergleichst Du mit der nächsten Zahl und setzt ggf. das temporäre Maximum um.
Das machst Du, bis Du alle Zahlen geprüft hast. Dann ist dein temporäres Maximum dein gesuchtes Maximum.

Daher: Stell Dir doch selbst die Aufgabe! Wie ermittelst Du die größte Zahl, wenn Dir jemand einen Zettel mit 3 Zahlen gibt? Oder mit 4? oder mit 10? Schaffst Du das irgendwie, die größte Zahl zu finden? Und dabei vergiss Java! Du willst ja erst einmal für Dich eine Lösung finden. Und dann überlege Dir, wie Du das einem Anderen erklären kannst.
 

Jw456

Top Contributor
Java:
if (a<b || a>b || a==b)
nicht allles auf einmal prüfen
es gibt auch noch das "else" beim "if"

also wenn a>b true ist sollst du b ausgeben
wenn nein " else" prüfe weiter
Dies bezog sich auf den Code vor deiner Post Änderung.

@animeLoan
Bitte poste Code auch in den dafür vorgesehen Codebereich oben links „</>“
Macht das lesen für alle einfacher.
 

Jw456

Top Contributor
Bei nur drei Variablen würde das auch reichen.
Java:
    public static void checkBigNumber(int a, int b, int c) {
       if(a>=b && a>=c){
           // ausgabe a
       } else if(b>=a && b>=c) {
           // ausgabe b
         } else{
           // ausgabe c
         }
     }


Bei mehr als drei würde ich das von Konrad benutzen.
Und nicht mehr mit den einfachen vergleichen arbeiten.
Habe das nur so gegeben da du es schon so angefangen hast.


edit: Code wurde geändert Schaue Post #12 / #13
 
Zuletzt bearbeitet:

KonradN

Super-Moderator
Mitarbeiter
Bei nur drei Variablen würde das auch reichen.
Nein, ich fürchte, dass die Lösung falsch ist. Nimm mal einfach
a=3
b=3
c=1

a ist nicht größer als b, daher nicht das erste if
b ist nicht größer als a, daher nicht das zweite if
also gibst Du c aus als maximalen Wert im finalen else Zweig.

Wenn man so eine Logik haben möchte, da müsste man >= als Vergleichsoperator nutzen.
 

Jw456

Top Contributor
Nein, ich fürchte, dass die Lösung falsch ist. Nimm mal einfach
a=3
b=3
c=1

a ist nicht größer als b, daher nicht das erste if
b ist nicht größer als a, daher nicht das zweite if
also gibst Du c aus als maximalen Wert im finalen else Zweig.

Wenn man so eine Logik haben möchte, da müsste man >= als Vergleichsoperator nutzen.
Die Aufgabe heißt er soll das größte auf dem Bildschirm ausgeben er muss nicht sagen welche das größte ist.



edit:
OK hast recht
 

KonradN

Super-Moderator
Mitarbeiter
Teste es wird nur eine Ausgabe gemacht. Egal welche gleich sind zwei oder auch alle drei.
Immer nur eine Ausgabe
Ja es wird nur eine Ausgabe gemacht, aber die kann falsch sein! Ich habe das Beispiel aufgezeigt und sogar für Dich durchgespielt. Also im Augenblick verstehe ich gerade nicht, wo das Problem ist. Hast Du den Post nicht gelesen? Denkst Du vor dem Post einer Nachricht nicht nach?

Evtl. brauchst Du es als Ausführbaren Code?
Java:
public class Test {

    public static void checkBigNumber(int a, int b, int c) {
        if(a>b && a>c){
            System.out.println(a);
        } else if(b>a && b>c) {
            System.out.println(b);
        } else{
            System.out.println(c);
        }
    }

    public static void main(String[] args) {
        checkBigNumber(3,3,1);
    }
}

Und die größte Zahl bei den Zahlen 3, 3, 1 ist bei Deinem Code nun tatsächlich:

Bildschirmfoto 2022-04-20 um 18.01.51.png
Ja, war jetzt sehr unerwartet, so komplexe Vorgänge, wie ich ja schon im letzten Post dargelegt habe, sind nicht leicht zu durchschauen... Aber vielleicht kannst Du dem ja jetzt folgen ...
 

KonradN

Super-Moderator
Mitarbeiter
ich habe es doch schon eingesehen was willst du jetzt noch

PS mein edit war füher als dein Post.
Und wie meinst Du, sehe ich Deinen Edit während ich schreibe? Sorry, aber mir wird das einfach zu blöd.

Tipp: Wenigstens kurz nachdenken, ehe man etwas schreibt. Dann muss man
a) nicht nach dem Schreiben sofort editieren
b) nicht zig Antworten hintereinander schreiben
 

Sirmeabe

Mitglied
Die Lösung für 3 Aufgabe
Java:
     int x=5;
     int y=2;
     int z=7;
    
    if(x>y && x<z || x<z && x>y){
        System.out.println(x);}
    
    if(y>x && y<z || y<x && y>x){
        System.out.println(y);}
    
    if(z>x && z<y || z<x && z>y){
        System.out.println(z

In der Aufgabenstellung handelt es sich um 3 verschiedene Zahlen. Das ist eine mögliche Lösung.
 

Jw456

Top Contributor
Ich habe den Code doch geändert und Konrad auch. Also lese den Thread von oben nach unten.

Schaue #post 11 meine Lösung

Post #14 komplett ignorieren
 
Zuletzt bearbeitet:

Marinek

Bekanntes Mitglied
Wenn du mit mehreren Zahlen so eine Kombination 3 3 3 meinst, dann siehe oben.

Wenn du jetzt aus 100 zahlen die größte haben willst, wirst du um Rekursionen oder Schleifen nicht herumkommen.
 

Sirmeabe

Mitglied
Habe den Thread von oben nach unten gelesen und finde keine Lösung für die 3te Aufgabe.


3.
chreiben Sie ein Programm Median, das 3 verschiedene ganze Zahlen a,b,c einliest
und den mittleren der drei Werte ausgibt. Damit ist nicht der arithmetische Mittelwert
(a+b+c) / 3 gemeint. Denken Sie sich a, b und c der Größe nach geordnet. Das
Programm gibt den Wert aus, der dann in der Mitte steht.“
 

Marinek

Bekanntes Mitglied
Habe den Thread von oben nach unten gelesen und finde keine Lösung für die 3te Aufgabe.


3.
chreiben Sie ein Programm Median, das 3 verschiedene ganze Zahlen a,b,c einliest
und den mittleren der drei Werte ausgibt. Damit ist nicht der arithmetische Mittelwert
(a+b+c) / 3 gemeint. Denken Sie sich a, b und c der Größe nach geordnet. Das
Programm gibt den Wert aus, der dann in der Mitte steht.“
Das ist auch eine andere Frage. Das wurde in diesem thread gar nicht diskutiert.

Wenn die Zahlen sortiert eingegeben werden, dann ist es immer b ;)

Sonst kann man sie sortieren und anschließend b ausgeben.
 

Sirmeabe

Mitglied
Nach meiner Lösung, wird die Zahl ausgegeben die in der Mitte ist(von Wert aus gesehen).
Muss nicht unbedingt „b“ sein. Die Aufgabenstellung ist ein bisschen seltsam formuliert. Den sonnst müsste man immer „b“ ausgeben, das macht nicht wirklich einen Sinn. Meiner Meinung nach.
 

Jw456

Top Contributor
Java:
if(x>y && x<z || x<z && x>y){
        System.out.println(x);}

was soll das "oder"  sinnlos

 wenn du  das grösste suchst
  if(x >= y  &&  x >= z ){
        System.out.println(x);}

wenn du das in der Mitte suchst ist
 if(x >= y  &&  x <= z ){
        System.out.println(x);}
 
Zuletzt bearbeitet:

KonradN

Super-Moderator
Mitarbeiter
Er hat sich da halt schlicht vertan. Die Checks sind einfach falsch herum. Er hat die Checks gedreht und die Buchstaben getauscht womit dann wieder das Gleiche geprüft wurde.
 

Sirmeabe

Mitglied
Ihr habt recht, ich habe das gleiche 2 mal geprüft. Oder kann auch weg.

Java:
wenn du das in der Mitte suchst ist
 if(x >= y  &&  x <= z ){
        System.out.println(x);}

Also das gibt keine mittlere Zahl aus.
Nur wenn die wirklich x ist.

>= warum = ?
Wenn die Zahlen verschieden sein sollen?
 

Sirmeabe

Mitglied
Hier meine korrigierte Version, mit a b c
Java:
int a=5;
int b=3;
int c=7;


if(a>b && b<c){
        System.out.println(a);}
    
    if(b>a && b<c){
        System.out.println(b);}
    
    if(c>a && c<b){
        System.out.println(c);}
 

KonradN

Super-Moderator
Mitarbeiter
Oder kann auch weg.
Nein, kann nicht weg! Es gibt zwei Möglichkeiten, wie eine Zahl die mittlere ist und die musst Du natürlich auch prüfen!
Teste es einfach mit 1 2 3 und mit 3 2 1
1 < 2 und 2 < 3 -> ok
Aber 3 < 2 und 2 < 1 ???

Und in der ersten Aufgabe waren gleiche Zahlen erlaubt. Daher wurden die folgenden Aufgaben als darauf aufbauend betrachtet.

Edit:
Hier meine korrigierte Version, mit a b c
Die so natürlich falsch ist (s.o.).
 

Jw456

Top Contributor
Ihr habt recht, ich habe das gleiche 2 mal geprüft. Oder kann auch weg.

Java:
wenn du das in der Mitte suchst ist
 if(x >= y  &&  x <= z ){
        System.out.println(x);}

Also das gibt keine mittlere Zahl aus.
Nur wenn die wirklich x ist.

>= warum = ?
Wenn die Zahlen verschieden sein sollen?
Klar das hier die beiden anderen noch notwendig sind du sollst doch auch was machen.

wenn du alle drei hast wird immer nur ein if true sein und auch nur eine Ausgabe kommen.

es wure schon gesagt das du auf "gröser oder gleich" >= oder "kleiner oder gleich <= prüfen musst.

PS wenn du nicht das >= , <= benutzt brauchst du das Oder
 
Zuletzt bearbeitet:

KonradN

Super-Moderator
Mitarbeiter
Vielleicht bei sowas ein kleiner Tipp:

Wenn ihr sowas als Code schreibt: Testet es auch direkt. Das ist relativ einfach:
a) Ihr packt es in eine Methode - also die drei Zahlen kommen als Parameter.
b) Nun schreibt ihr alle Testfälle auf in den Aufrufen. Dazu am Besten eine kleine test Methode machen:
Java:
void test (int a, int b, int c, int ergebnis) {
    System.out.print(ergebnis + " := ");
    meineZuTestendeMethode(a,b,c);
}
(Da kann die Methode auch weiter die Ausgabe machen).

Und dann wird das einfach aufgerufen mit allen möglichen Konstellationen von 1 2 3:
teste(1,2,3, 2);
teste(1,3,2, 2);
teste(2,1,3, 2);
...

Wobei man hier sieht: Das mit der Hilfsmethode und dem Ergebnis kann man hier weglassen, da das Ergebnis immer gleich ist.

Und wenn man es dann aufruft, dann siehst man die Ausgabe 2 := 2 immer schön untereinander. Es gibt kein 2 := 2 := 2 oder so (Das wäre bei Deinem Code paar Mal der Fall, weil kein Ergebnis ausgegeben wird).

Da kann man dann auch schon überlegen: Will man das evtl. mehr "automatisieren"? Also kein manuelles Prüfen? Dann könnte man es umändern: Die Ausgabe erfolgt nicht bei der "Berechnung" sondern das Ergebnis wird zurück gegeben. Und schon kann man die Testmethode anpassen:
Java:
void teste(int a, int b, int c, int ergebnis) {
    int berechnet = zuTestendeMethode(a,b,c);
    if (berechnet != ergebnis) {
        System.out.println("FEHLER: zuTestendeMethode(" + a + ", " + b + ", " + c + ") = " + berechnet + " statt " + ergebnis);
    }
}

Das wäre dann sowas wie ein Unittest für Arme. Und ein guter, erster Einstieg in eben dieses Unit Testing.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Hilfe bei Praktischen Aufgaben von Arrays Java Basics - Anfänger-Themen 39
Lacotto Java Kurs Aufgaben Hilfe Java Basics - Anfänger-Themen 14
P9cman Tipps für Rekursive Aufgaben mit Strings oder allgemein Java Basics - Anfänger-Themen 2
U anfänger braucht hilfe . wir konnten die aufgaben nicht beantworten Java Basics - Anfänger-Themen 5
A Selbe Aufgaben stellung, andere Lösung Java Basics - Anfänger-Themen 7
K Java Aufgaben-Wie ran gehen? Java Basics - Anfänger-Themen 6
S Was für Aufgaben könnten sich hier hinter verbergen? Java Basics - Anfänger-Themen 5
A Java Aufgaben Java Basics - Anfänger-Themen 5
G Probleme bei Frame aufgaben Java Basics - Anfänger-Themen 6
V Erste Schritte Hilfe gesucht beim einstieg in Java und erste Aufgaben aus der Berufsschule Java Basics - Anfänger-Themen 9
S Schnelle Hilfe bei 2 kurzen Aufgaben benötigt Java Basics - Anfänger-Themen 2
D Collections Aufgaben Java-Programmierung Überforderung Java Basics - Anfänger-Themen 36
M Java Insel Aufgaben von der DVD gesucht Java Basics - Anfänger-Themen 2
A Threads Threads bestimmte Aufgaben zuweisen... Java Basics - Anfänger-Themen 3
C Erste Schritte Probleme bei Aufgaben zu Schleifen Java Basics - Anfänger-Themen 11
J Vererbung Wurden die Aufgaben richtig programmiert? Java Basics - Anfänger-Themen 20
N Java Aufgaben Java Basics - Anfänger-Themen 4
V Buch:Programmieren lernen mit Java-Aufgaben zu schwer ? Java Basics - Anfänger-Themen 2
M Klassen Hilfe bei Aufgaben Java Basics - Anfänger-Themen 5
K Button's mit versch. Aufgaben/ActionListener Java Basics - Anfänger-Themen 12
G OOP [Eilig] Biete 10€ für Lösung von 2 Grundlagen-Aufgaben Java Basics - Anfänger-Themen 6
M Problem/Unsicherheit bei Java-Aufgaben Java Basics - Anfänger-Themen 11
S Anfänger Aufgaben Java Basics - Anfänger-Themen 6
CR7 GUI-Aufgaben Java Basics - Anfänger-Themen 7
B Brauche Hilfe mit Aufgaben mit dem JavaEditor Java Basics - Anfänger-Themen 8
P Wie mehreren Threads Aufgaben zuweisen und abarbeiten lassen? Java Basics - Anfänger-Themen 15
D Zeitliche Aufgaben? Java Basics - Anfänger-Themen 3
S Herangehensweise an Aufgaben Java Basics - Anfänger-Themen 8
J Schleifen-Aufgaben Java Basics - Anfänger-Themen 6
L Java Programier Aufgaben für Anfänger Java Basics - Anfänger-Themen 5
B Was für Aufgaben haben die einzelne Entwurfsmuster? Java Basics - Anfänger-Themen 9
D Periodische Aufgaben erledigen in Webanwendung (Servlet/JSP) Java Basics - Anfänger-Themen 7
A Aufgaben zu OOP Java Basics - Anfänger-Themen 14
J Aufgaben Dynamisch auf Pool von Threads verteilen. Java Basics - Anfänger-Themen 3
-horn- Wie "Module" für wiederkehrende Aufgaben machen? Java Basics - Anfänger-Themen 7
G 3. Aufgaben und komme nicht weiter (Felder, Methoden) Java Basics - Anfänger-Themen 3
K Hallo, Ich suche kleine Java Program-Aufgaben zum üben ? Java Basics - Anfänger-Themen 4
J Aufgaben Java Basics - Anfänger-Themen 25
J Tolle Aufgaben Stellung - wer kann helfen? Java Basics - Anfänger-Themen 12
J Hilfe zu 2 Aufgaben Java Basics - Anfänger-Themen 27
G Hilfe komme nicht weiter bei diesen aufgaben Java Basics - Anfänger-Themen 2
M Suche gute Anfänger "Aufgaben" Java Basics - Anfänger-Themen 8
T Suchen Anfänger-Aufgaben Java Basics - Anfänger-Themen 4
Z SGD Aufgaben Jav04 Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben