Obstmarkt für Intellektuelle

Bitte aktiviere JavaScript!
Hallo Ihr Lieben,

ich benötige eure Hilfe: Die Aufgabe hört sich eigentlich ganz simpel an nur ich noob hab absolut keinen Plan wie ich anfangen soll.

Aufgabenstellung:
1 Apfel + 2 Bananen + 3 Gurken kosten 1400 cent
2 Äpfel + 3 Bananen + 5 Gurken kosten 2300 cent
5 Äpfel + 1 Banane + 1 Gurke kosten 1000 cent
Hinweis: kein Produkt kostet mehr als 500cent!

Schreiben Sie ein Programm, welches Ihnen die Preise eines Apfels, einer Banane und einer Gurke errechnet.

ich schätze mal ich benötige int, ne for schleife... aber wie schreib ich das am besten?

ich habe noch keinen fertigen code gebastelt, da ich gerade am anfang bin.

Danke für Eure Unterstützung!
 
A

Anzeige


Vielleicht hilft dir dieser Kurs hier weiter: (hier klicken)
Ist das genau die Aufgabenstellung? Irgendwie ist diese für mich nicht schlüssig. Entweder löse ich dieses eine Gleichungssystem mit 3 Unbekannten (solltest du in Mathematik schon mal davon gehört haben) oder ich schreibe ein Programm, das hier allgemein 3 Gleichungen als Input erwartet und dieses System dann löst. So ist für mich nicht schlüssig was gefordert ist.
 
Ja das mit den Gleichungssystemen hab ich mir auch schon überlegt flopalko. Was wäre der einfachere Ansatz? Was meinst du?
 
Kommt eben auf die Aufgabe an: Ist das diese in genauem Wortlaut? In diesem Fall würde ich einfach mit Zettel und Papier das Gleichungssystem lösen und in der Methode beinhart Konstanten zurückgeben, einfach nur um dem Aufgabensteller die Idiotie dieser Aufgabe aufzuzeigen.
Wenn das eben allgemeiner gehalten ist, dass du z.B. für ein übergebenes Gleichungssystem (kann als Input beispielsweise in einem 2D-Array (Matrix) daherkommen) die Lösung zurückgeben sollst, dann wirst du eben dies implementieren müssen.

EDIT: wenn du natürlich was dabei lernen willst, wäre das Letztere sowieso besser. Allerdings ist eben unklar, ob es einen Input gibt oder nicht. Wenn nicht, kannst du natürlich trotzdem eine allgemeine Methode schreiben und dann eine Methode, die diese dann mit entsprechenden Parametern aufruft.
 
1 Apfel + 2 Bananen + 3 Gurken kosten 1400 cent
2 Äpfel + 3 Bananen + 5 Gurken kosten 2300 cent
5 Äpfel + 1 Banane + 1 Gurke kosten 1000 cent
Hinweis: kein Produkt kostet mehr als 500cent!
Rein mathematisch könnte das passen:
1A + 2B +3G = 1400
2A + 3B +5G = 2300
5A + 1B +1G = 1000
A,B,G <= 500
Muss man das mit regulären Java-Bordmitteln bearbeiten oder darf man Fremdbibliotheken benutzen ? Siehe zB. die Vorschläge JAMA oder Commons Math von https://stackoverflow.com/questions/1431885/how-to-solve-equations-with-java
Und als Kontrolle kann man WolframAlpha rechnen lassen: https://www.wolframalpha.com/input/?i=1x+2y+3z=1400,+2x+3y+5z=2300,5x+1y+1z=1000
 
Die Reaktion des OP und der Hinweis Hinweis: kein Produkt kostet mehr als 500cent!
Lassen mich vermuten, dass 3 geschachtelte for-schleifen gefordert sind mit einer If-Abfrage, um die Gleichheit zu testen. Hierbei nehme ich ganz unverschämt an, dass die Lösung ganzzahlig ist. Natürlich wäre das "richtige" Lösen des LGS interessanter, aber ich schätze, dass diese Aufgabe eine für Einsteiger sein soll.
 
Kommt in Mathe in der Grundschule in der ersten oder zweiten Klasse dran. Echt alles Idioten
Ich meine nicht, dass das Lösen von LGS idiotisch ist, sondern, dass die Aufgabe so keinen Sinn ergibt. Entweder soll man allgemein LGS lösen können oder die Aufgabe reduziert sich auf das Lösen der Gleichung und das returnen von Konstanten im Programm. So wie die Aufgabe oben gestellt ist ergibt es einfach keinen Sinn dafür ein Programm zu schreiben.
 
Zuletzt bearbeitet:
@flopalko ich stimme Dir zu. Eine konstante Aufgabe zu lösen mach als Programm nicht wirklich viel Sinn.
Außerdem ist der Hinweis hier völlig überflüssig.
1 Apfel + 2 Bananen + 3 Gurken kosten 1400 cent
2 Äpfel + 3 Bananen + 5 Gurken kosten 2300 cent
5 Äpfel + 1 Banane + 1 Gurke kosten 1000 cent
Hinweis: kein Produkt kostet mehr als 500cent!

Ein Gleichungssystem kann man in Matrixform so formulieren.
A * x = b
wobei A eine Matrix ist und x und b sind Spaltenvektoren.
Lösungsmöglichkeiten sind. { keine , eine, unendlich viele } Lösung(en).
Die Matrix A wäre in diesem Beispiel:
1, 2, 4
2, 3, 5
5, 1, 1
Der Vektor b
1400
2300
1000

Da die Spalten- oder Zeilenvektoren linear unabhängig sind --> es gibt ein Inverse Matrix zu A ( A' )
A'
-0.4, 0.2, 0.2
4.6, -2.8, 0.2
-2.6, 1.8, -0.2
also gibt es hier genau eine Lösung.
x= A' * b daraus folgt.
x = 100
y = 200
z = 300

Es stimmt zwar, dass die Kosten der Produkte < 500 sind. Für die Lösung der Problems ist das aber überflüssig.
3 linear unabhängige Gleichungen, 3 Unbekannte also genau eine Lösung.
;)
 
Dieser Punkt geht eindeutig an @Blender3D .... Und man könnte alle Komponenten noch durch 100 teilen, um etwas vernünftige Werte zu erhalten. Dann kosten die Obste nämlich 1, 2 und 3 Euro oder DM oder Pfund oder oder Dollar oder oder :D

Es muss nur noch von dem TE in ein Programm gemeißelt werden...
Aus Erfahrung kann ich aber sagen, dass auch wenn nicht Beispiel dransteht nicht einfach 1,2,3 zurückgegeben werden soll...
 
Danke mal an alle für die Hilfe. Habe da etwas versucht könnt ihr mal einen Blick drüber werden und haha @mihe7 das stimmt ich kauf dort auch nicht ein hehe

Code:
public static void main(String[] args) {
        // TODO Auto-generated method stub

        
//        for (int 1A + 2B + 3G = 1400);
//                for (int 2A + 3B + 5G = 2300);
//                        for (int 5A + 1B + 1G);
//                               
//                                A + B + G <= 500
//           
    for (int apfel = 0; apfel <= 500; apfel++) {
        for(int banane = 0 ; banane <= 500; banane++) {
            for(int gurke = 0; gurke <= 500; gurke++) {
                
                if((1*apfel+2*banane+3*gurke == 1400) && (2*apfel+3*banane+5*gurke == 2300) && (5*apfel+1*banane+1*gurke == 1000)) {
                    System.out.println("Apfel: " + apfel + " Banane: " + banane + " Gurke: " + gurke);
                    
                    }
                }
            }
        }
    }
}
 
@Noob26 Wieso reduzierst Du Deine Schleifendurchläufe denn nicht auf ein Hundertstel, wie ich es geschrieben habe? :confused: Immer diese Kritikresistenten hier.
Was genau willst du denn optimieren?
Einfach nur die vollen 100er zu nehmen würde hier gut gehen, aber das ist Zufall.

Ändern wir die Aufgabe etwas:
1a + 2b + 3g = 1700
2a + 3b + 5g = 2300
5a + 1b + 2g = 1000
Und alles wieder <= 500

100er Schritte werden da jetzt keine Lösung finden.
(a=150, b=250, c=350 wäre hier die Lösung)
 
Habe da etwas versucht könnt ihr mal einen Blick drüber
Ist für die Brutforce Methode richtig. Kritikpunkt wäre noch, dass nachdem die Lösung gefunden wurde die Schleifen unnötigerweise weiterlaufen.
Hier Deine Lösung etwas besser strukturiert und mit Abbruch sobald die Lösung gefunden wurde.

Java:
        ...
            
        int[] solution = getSolution();
        for (int i : solution)
            System.out.println(i);
    }

    public static int[] getSolution() {
        for (int a = 0; a <= 500; a++) {
            for (int b = 0; b <= 500; b++) {
                for (int g = 0; g <= 500; g++) {
                    if (isSolution(a, b, g)) {
                        return new int[] { a, b, g };
                    }
                }
            }
        }
        return null;
    }

    public static boolean isSolution(int a, int b, int g) {
        return (a + 2 * b + 3 * g == 1400) && (2 * a + 3 * b + 5 * g == 2300) && (5 * a + 1 * b + g == 1000);
    }
 
Passende Stellenanzeigen aus deiner Region:

Neue Themen

Oben