Berechnung von Punkten

F

fjordschritt

Guten Abend.

Muss diese Aufgabe hier lösen und als erstes ist mir als Gedanke gekommen, dass man mit if und else arbeiten könnte/müsste?!

Schreiben Sie ein Programm, das berechnet, ob ein Student schon die Scheinkriterien erfüllt hat. Das Programm bekommt beim Start zwölf ganze Zahlen ? [0, 10] als Parameter übergeben. Diese Zahlen repräsentieren die Punkte ür die 12 Scheinaufgaben. Immer zwei aufeinanderfolgende Zahlen ergeben einen Zettel (Zahl 1 & Zahl 2 = Zettel 1; Zahl 3 & Zahl 4 = Zettel 2;...). Das Programm gibt wie folgt aus, ob der Student den Schein bekommt oder nicht, und im letzten Fall, an welchen Kriterien das scheiterte:
• Glueckwunsch! Sie erhalten den Schein.
• Schein nicht gewaehrt: Es wurden nicht 50% aller Punkte erreicht.
• Schein nicht gewaehrt: Es wurden nicht 5 von 6 Zettel ausreichend bearbeitet.
• Schein nicht gewaehrt: Es wurden beide Kriterien nicht erfuellt.

Ich bin schon soweit gekommen, jedoch komme ich jetzt nicht mehr weiter. Hoffe Ihr könnt mir das einigermaßen umbasteln, er gibt nämlich noch jede Menge Fehlermeldungen aus! Ich hab da jetzt keinen Plan!

Java:
    public static void main(String[] args) {
        int sheetsFailed = 0;
        int gesamtPZ = 0;
        for (zähler i deklarieren/definieren und mit 0 initialisieren; i < args.length; i += 2){
            gesamtPZ += Integer.parseInt(args[i]) + Integer.parseInt(args[i+1]);
            if ((Integer.parseInt(args[i]) + Integer.parseInt(args[i+1])) < 10)
                sheetsFailed += 1;
        }
        if ((Gesamte Punktezahl >= 60) && (maximal 1 Blatt mit Punkte < 10))
            ...
        else if ((Gesamte Punktezahl > 60) && (mehr als 1 Blatt mit Punkte < 10))
            ...
        else if (Gesamte Punktezahl < 60)
            ...
        else if (mehr als 1 Blatt mit Punkte < 10)
            ...
    }
 
Versuch mal so. Musst die Punkte[] gegen args[] ersetzen. Hast du aber ja in deinem Beispiel schon gehabt mit Integer.parseInt usw.

Code:
public static void main(String[] args) {
		
		int punkte[] = {10,2,30,4,5,6,7,8,9,10};
		int sheetsFailed = 0;
		int gesamtPZ = 0;
		for (int i = 0; i < 9; i+=2){
			gesamtPZ += punkte[i] + punkte[i+1];
			if (punkte[i] + punkte[i+1] < 10)
				sheetsFailed += 1;
		}
		if ((gesamtPZ >= 60) && (sheetsFailed <= 1))
			System.out.println("woohoo, Punkte:"+ gesamtPZ + " Sheetsfailed:"+ sheetsFailed);
		
		else if ((gesamtPZ >= 60) && (sheetsFailed > 1))
			System.out.println("nicht geschafft weil..."+ gesamtPZ + " Sheetsfailed: "+ sheetsFailed);
		
		else if ((gesamtPZ < 60) && (sheetsFailed > 1))
			System.out.println("nicht geschafft weil..."+ gesamtPZ + " Sheetsfailed: "+ sheetsFailed);

	}
 
Du hast die Punkte jetzt so eingegeben, man soll es aber doch über die Parametereingabe machen, nicht durch die Konsole.
 
Insgesamt so richtig weiterhelfen tut es mir leider nicht.
Gibt es noch eine andere Version, die man nehmen könnte, um das Programm zu komplettieren?
 
dann versteh ich das Problem nicht.
Ist die Übergabe als Parameter das Problem?
Wenn ja beschreib gleich, was du zum Programmieren benutzt!
 
Zuletzt bearbeitet:
Habe insgesamt das Problem mit dem ganzen Aufbau und der IF Abfrage.
Habe ja da ein Grundmuster, glaube es ist aber nicht wirklich richtig.
Wegen der Parameter muss man doch irgendwoe args0 args1 usw... irgendwo auch hinschreiben.

Insgesamt gesagt, ich kann das Programm nicht wirklich aufbauen, meine Bemühungen reichen nicht.
 
Also ich vermute mal, du musst in deiner Konsole Parameter übergeben.
Dann geht es so:

java Programmname 10 23 2 3 4 5 6 7 8 9

Achtung in dem Code sind keine Sicherheitsabfragen!
Code:
public static void main(String[] args) {
		
		int sheetsFailed = 0;
		int gesamtPZ = 0;
		for (int i = 0; i < 9; i+=2){
			gesamtPZ += Integer.parseInt(args[i]) + Integer.parseInt(args[i+1]);
			if (Integer.parseInt(args[i]) + Integer.parseInt(args[i+1]) < 10)
				sheetsFailed += 1;
		}
		if ((gesamtPZ >= 60) && (sheetsFailed <= 1))
			System.out.println("woohoo, Punkte:"+ gesamtPZ + " Sheetsfailed:"+ sheetsFailed);
		
		else if ((gesamtPZ >= 60) && (sheetsFailed > 1))
			System.out.println("nicht geschafft weil..."+ gesamtPZ + " Sheetsfailed: "+ sheetsFailed);
		
		else if ((gesamtPZ < 60) && (sheetsFailed > 1))
			System.out.println("nicht geschafft weil..."+ gesamtPZ + " Sheetsfailed: "+ sheetsFailed);

	}

}
 
Zuletzt bearbeitet:
Wenn du aber kein Java Programm erstellen kannst, würde ich mal erst ein "Hello World"-Tutorial lesen. Danach sollte eigentlich alle klar sein.
Sollte das der Fall sein, reichen deine Bemühungen(!) wirklich nicht!
 
Zuletzt bearbeitet:
Vielen Dank für Deine Antwort. Das Programm geht, hält sich aber nicht ganz an die Bedingungen der Aufgabenstellung.

Einmal soll es ausgeben, dass Du es geschafft hast, wenn man mehr als die 50% hat. Klappt soweit ich es sehe.

Dann soll es einmal sagen, dass Du es nicht geschafft hast, wenn Du weniger als 50% der Punkte, also unter 60p hast. Sieht soweit auch ganz gut aus.

Dann soll es sagen, Du hast es nicht geschafft wenn Du nicht 5 von 6 Aufgabenzetteln bearbeitet hast. Die Bedingung hier, Du musst mindestens auf 5 von 6 Zetteln eine max Punktzahl von 2p, also mindestens 10% erreicht haben.

Zum Schluss noch die Ausgabe, wenn Du die beiden letzten nicht geschafft hast.
 
Dann ist in meiner Lösung die Voraussetztung für sheetsFailed falsch.

Muss also heißen:

Code:
if (Integer.parseInt(args[i]) + Integer.parseInt(args[i+1]) < 2)
				sheetsFailed += 1;

also:

Einmal soll es ausgeben, dass Du es geschafft hast, wenn man mehr als die 50% hat:

Code:
if ((gesamtPZ >= 60) && (sheetsFailed <= 1))

Dann soll es einmal sagen, dass Du es nicht geschafft hast, wenn Du weniger als 50% der Punkte, also unter 60p hast, also;
Code:
else if ((gesamtPZ < 60) && (sheetsFailed <= 1))

Dann soll es sagen, Du hast es nicht geschafft wenn Du nicht 5 von 6 Aufgabenzetteln bearbeitet hast. Die Bedingung hier, Du musst mindestens auf 5 von 6 Zetteln eine mind. ?Punktzahl von 2p

Code:
else if ((gesamtPZ >= 60) && (sheetsFailed > 1))

Zum Schluss noch die Ausgabe, wenn Du die beiden letzten nicht geschafft hast
also:

Code:
else if ((gesamtPZ < 60) && (sheetsFailed > 1))
 
Zurück