# Berechnung von Punkten/ If-else Strategie?!



## babuschka (5. Dez 2009)

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.


----------



## Marco13 (5. Dez 2009)

Guter Gedanke


----------



## javimka (5. Dez 2009)

nicht zu vergessen das "else if"


----------



## babuschka (5. Dez 2009)

Gut, würde so vorgehen, ich schreibe ein Programm, da Parameterübergabe mache ich das dann mit args0 usw.

Wie sieht die Schleife dann aus mit if und else?!

Was mich irritiert ist -und wie ich es dann auch in mein Programm übersetze- dass immer zwei aufeinanderfolgende Zahlen einen Zettel ergeben.

Kann man hier ein ungefähres Muster mir zeigen, dass man dann umwandeln kann nach den benötigten Parametern und so weiter nur verändern muss?


----------



## javimka (5. Dez 2009)

```
int zettel1 = zahl1 & zahl2;
...
if (irgendwas==10) {
  ...
} else if (irgengendwas>5) {
  ...
} else {
  ...
}
```


----------



## Marco13 (5. Dez 2009)

Das "&" könnte da jetzt aber verwirren - es geht nicht um ein bitweises binäres AND.
Man kann das ganze relativ kurz schreiben, indem man zusätzlich zu if und else noch das Konzept der (advanced  ) _Schleife_ verwendet, aber man kann natürlich auch eine Latte von if's verwenden.


----------



## javimka (5. Dez 2009)

Du hast ihn doch bei der if-Variante unterstützen wollen :bae:
Aber klar hast du Recht, wenn er Schleifen schon kennt.


----------



## Jango (5. Dez 2009)

Wenn wir deine Fragen beantworten, machen wir quasi deine Hausaufgaben.
'javimka' hat dir im Prinzip schon ein solches if-, else if-, else-Konstrukt gezeigt.
Mit switch ginge das auch.

Und nochwas - 'if-Schleifen' gibt es nicht.


----------



## Ebenius (5. Dez 2009)

if-schleife.de

SCNR, Ebenius


----------



## babuschka (6. Dez 2009)

Hab eine kurze Frage noch zu meiner Aufgabe.

Bin jetzt soweit:


```
public class TutorialCertificate {

    public static void main(String[] args) {
        double Scheinaufgabe1=0;
        double Scheinaufgabe2=0;
        double Scheinaufgabe3=0;
        double Scheinaufgabe4=0;
        double Scheinaufgabe5=0;
        double Scheinaufgabe6=0;
        double Scheinaufgabe7=0;
        double Scheinaufgabe8=0;
        double Scheinaufgabe9=0;
        double Scheinaufgabe10=0;
        double Scheinaufgabe11=0;
        double Scheinaufgabe12=0;
        Scheinaufgabe1=Double.parseDouble(args[0]);
        Scheinaufgabe2=Double.parseDouble(args[1]);
        Scheinaufgabe3=Double.parseDouble(args[2]);
        Scheinaufgabe4=Double.parseDouble(args[3]);
        Scheinaufgabe5=Double.parseDouble(args[4]);
        Scheinaufgabe6=Double.parseDouble(args[5]);
        Scheinaufgabe7=Double.parseDouble(args[6]);
        Scheinaufgabe8=Double.parseDouble(args[7]);
        Scheinaufgabe9=Double.parseDouble(args[8]);
        Scheinaufgabe10=Double.parseDouble(args[9]);
        Scheinaufgabe11=Double.parseDouble(args[10]);
        Scheinaufgabe12=Double.parseDouble(args[11]);

.....
   
    }

}
```

In der Aufgabenstellung stand ja, dass jeweils de ersten beiden Aufgaben eine Zettel usw ergeben. Wie mache ich das Java verständlich?! Habe keine Ahnung wie ich das programmieren soll. Danach kann ich ja dann mit if/else anfangen.


----------



## Marco13 (6. Dez 2009)

Davon ausgehend, dass es auf jede Aufgabe 0 oder 1 Punkte gibt:

```
double zettelPunktzahl0 = scheinaufgabe1 + scheinaufgabe2;
```

Variablennamen klein schreiben. 
Man fängt bei 0 an zu zählen.
Die doubles sollten ein array sein!


----------



## nrg (7. Dez 2009)

Marco13 hat gesagt.:


> Die doubles sollten ein array sein!



nach der Programmieraufgabe vermute ich, dass arrays noch nicht ausreichend besprochen wurden.

du kannst dir aber etwas Code sparen, wenn du die Variablen scheinaufabeX direkt bei der deklaration/definition mit dem argument/paramenter initialisierst.

```
double scheinaufgabe0=Double.parseDouble(args[0]);
```

zu der if-abfrage. das wäre z.b. auch so denkbar:

```
if ((punktzahl < 50%) || (5 von 6 Zettel nicht ausreichend)) 
	System.out.println("durchgefallen");
else
	System.out.println("bestanden");
```

vermutlich ist der post überflüssig, weil du das heute in der schule/uni besprechen wirst aber vllt hilft er dir ja doch noch weiter.

grüße
andi


----------



## Murmeltier1985 (7. Dez 2009)

hy, sitz grad an der gleichen Aufgabe, denkt aber bitte nochmal nach ob du wirklich double benutzen willst. Das sind ganze Zahlen. Viel Glück.


----------



## babuschka (7. Dez 2009)

Hab Deinen Ratschlag befolgt, es sieht nun so aus:


```
public class TutorialCertificate {

    public static void main(String[] args) {
        double Scheinaufgabe1=0;
        double Scheinaufgabe2=0;
        double Scheinaufgabe3=0;
        double Scheinaufgabe4=0;
        double Scheinaufgabe5=0;
        double Scheinaufgabe6=0;
        double Scheinaufgabe7=0;
        double Scheinaufgabe8=0;
        double Scheinaufgabe9=0;
        double Scheinaufgabe10=0;
        double Scheinaufgabe11=0;
        double Scheinaufgabe12=0;
        Scheinaufgabe1=Double.parseDouble(args[0]);
        Scheinaufgabe2=Double.parseDouble(args[1]);
        Scheinaufgabe3=Double.parseDouble(args[2]);
        Scheinaufgabe4=Double.parseDouble(args[3]);
        Scheinaufgabe5=Double.parseDouble(args[4]);
        Scheinaufgabe6=Double.parseDouble(args[5]);
        Scheinaufgabe7=Double.parseDouble(args[6]);
        Scheinaufgabe8=Double.parseDouble(args[7]);
        Scheinaufgabe9=Double.parseDouble(args[8]);
        Scheinaufgabe10=Double.parseDouble(args[9]);
        Scheinaufgabe11=Double.parseDouble(args[10]);
        Scheinaufgabe12=Double.parseDouble(args[11]);
        double zettelPunktzahl0 = Scheinaufgabe1 + Scheinaufgabe2;
        double zettelPunktzahl1 = Scheinaufgabe3 + Scheinaufgabe4;
        double zettelPunktzahl2 = Scheinaufgabe5 + Scheinaufgabe6;
        double zettelPunktzahl3 = Scheinaufgabe7 + Scheinaufgabe8;
        double zettelPunktzahl4 = Scheinaufgabe9 + Scheinaufgabe10;
        double zettelPunktzahl5 = Scheinaufgabe11 + Scheinaufgabe12;
```

Möchte jetzt mit der if Aweisungen anfangen.

Normalerweise macht man das ja so
if(x>10) usw.. davor gibt man ja meist das so ein, int x=11

Da ich aber ja die Parameterübergabe mache, kann ich ja nicht int x=11 eingeben. Wie gehe ich da vor?


----------



## Murmeltier1985 (7. Dez 2009)

```
int blatt1 = Integer.parseInt(args[0]) +  Integer.parseInt(args[1]);
```

und 

[JAVA=42]if (blatt1+blatt2+blatt3+blatt4+blatt5+blatt6 >= 60)
		{
			System.out.println("Glueckwunsch! Sie erhalten den Schein");
		}[/code]

Das müsste ja als Hilfestellung reichen, der Rest wird auch so aufgebaut....


----------



## babuschka (7. Dez 2009)

Das hat mir schon weitergeholfen, vielen Dank!

Habe aber noch 2 Fragen, wie sehen die Bedingungen aus, für das dritte und vierte if!?
Die andere, kann ich mein geschriebenes Programm nicht irgendwo kürzen, das sieht so voll aus und ich habe das Gefühl, dass nicht alles so sehr nützlich ist.


```
public class TutorialCertificate {

    public static void main(String[] args) {
        double Scheinaufgabe1=0;
        double Scheinaufgabe2=0;
        double Scheinaufgabe3=0;
        double Scheinaufgabe4=0;
        double Scheinaufgabe5=0;
        double Scheinaufgabe6=0;
        double Scheinaufgabe7=0;
        double Scheinaufgabe8=0;
        double Scheinaufgabe9=0;
        double Scheinaufgabe10=0;
        double Scheinaufgabe11=0;
        double Scheinaufgabe12=0;
        Scheinaufgabe1=Double.parseDouble(args[0]);
        Scheinaufgabe2=Double.parseDouble(args[1]);
        Scheinaufgabe3=Double.parseDouble(args[2]);
        Scheinaufgabe4=Double.parseDouble(args[3]);
        Scheinaufgabe5=Double.parseDouble(args[4]);
        Scheinaufgabe6=Double.parseDouble(args[5]);
        Scheinaufgabe7=Double.parseDouble(args[6]);
        Scheinaufgabe8=Double.parseDouble(args[7]);
        Scheinaufgabe9=Double.parseDouble(args[8]);
        Scheinaufgabe10=Double.parseDouble(args[9]);
        Scheinaufgabe11=Double.parseDouble(args[10]);
        Scheinaufgabe12=Double.parseDouble(args[11]);
        double zettelPunktzahl0 = Scheinaufgabe1 + Scheinaufgabe2;
        double zettelPunktzahl1 = Scheinaufgabe3 + Scheinaufgabe4;
        double zettelPunktzahl2 = Scheinaufgabe5 + Scheinaufgabe6;
        double zettelPunktzahl3 = Scheinaufgabe7 + Scheinaufgabe8;
        double zettelPunktzahl4 = Scheinaufgabe9 + Scheinaufgabe10;
        double zettelPunktzahl5 = Scheinaufgabe11 + Scheinaufgabe12;

        int blatt1 = Integer.parseInt(args[0]) +  Integer.parseInt(args[1]);
        int blatt2 = Integer.parseInt(args[2]) +  Integer.parseInt(args[3]);
        int blatt3 = Integer.parseInt(args[4]) +  Integer.parseInt(args[5]);
        int blatt4 = Integer.parseInt(args[6]) +  Integer.parseInt(args[7]);
        int blatt5 = Integer.parseInt(args[8]) +  Integer.parseInt(args[9]);
        int blatt6 = Integer.parseInt(args[10]) +  Integer.parseInt(args[11]);

        if (blatt1+blatt2+blatt3+blatt4+blatt5+blatt6 >= 60)
        {
            System.out.println("Glueckwunsch! Sie erhalten den Schein");
        }
        if (blatt1+blatt2+blatt3+blatt4+blatt5+blatt6 < 60)
        {
            System.out.println("Schein nicht gewaehrt: Es wurden nicht 50% aller Punkte erreicht");
        }
        if (?!)
        {
            System.out.println("Schein nicht gewaehrt: Es wurden nicht 5 von 6 Zettel ausreichend bearbeitet");
        }
        if (?!)
        {
            System.out.println("Schein nicht gewaehrt: Es wurden beide Kriterien nicht erfuellt");
        }
        
    }

}
```


----------



## nrg (7. Dez 2009)

Deine Struktur der If-Abfragen stimmt immer noch nicht ganz. Angenommen die Gesamtpunktzahl wäre > 60 und es wären trotzdem keine 5 von 6 Zettel mit ausreichend bearbeitet.

Ausgabe mit deinem Code:
Glueckwunsch! Sie erhalten den Schein
Schein nicht gewaehrt: Es wurden nicht 5 von 6 Zettel ausreichend bearbeitet

edit: deine variablen sind zum einen vom stil nicht ganz optimal deklariert (s. posting von Marco13) und zum anderen doppelt.


----------



## babuschka (7. Dez 2009)

Und wie würde ich das so hinbekommen, dass die If.Anweisungen stimmen und somit auch die Ausgabe?

Wegen dem double, kann ich da nicht dann auch int schreiben als Deklarierung?!
Und welche habe ich doppelt, würde double.parsedouble streichen.


----------



## nrg (7. Dez 2009)

klar kannst du die variablen als int definieren, solange es in deinem Test keine halben Punkte geben soll. ich hab die Aufgabe jetzt zum Spaß auch mal gemacht allerdings mit arrays. Sind dir arrays ein begriff? Weil ohne ists recht unschön meiner Meinung nach. Falls du Arrays nicht kennst versuch ich dir es anhand von deinem Code nochmal etwas deutlicher zu machen.


----------



## babuschka (7. Dez 2009)

Arrays hab ich schon mal gehört. Aber wie ich die da einzubauen habe ist mir unklar!
Wie Du ja in der Aufgabenstellung sehen konntest, wird nicht explizit gesagt, dass es nur ganze Punkte gibt, daher habe ich double genommen.

Weiter komme ich jetzt nicht. Weiteres ist mir unklar, gerade die 3 und 4 If Anweisung und ob ich den Rest so stehen lassen kann oder man etwas verkürzen sollte, damit das Programm nicht zu aufgebläht aussieht.


----------



## nrg (7. Dez 2009)

Ok ist auch ohne arrays ansich kein Problem, was mir grad aufgefallen ist.

```
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)
			...
	}
```


----------



## babuschka (7. Dez 2009)

Habe jetzt Deins mal übernommen und aus "int" ein "double" gemacht.

Nach dem If und else If habe ich dann immer


```
{
            System.out.println("....");
        }
```
gesetzt.

Ich verstehe aber nicht was du mit "for" und dem "if" danach meinst.

Was mir auch fehlt sind die args... Kann man trotzdem so wie Du es dann gemacht hast, eine Parametereingabe machen?


----------



## nrg (7. Dez 2009)

fjordschritt hat gesagt.:


> Habe jetzt Deins mal übernommen und aus "int" ein "double" gemacht.


ich würde erstmal beim int bleiben. sheetFailed ist zb nur ein Zähler der maximal um eins inkrementiert werden kann. Falls du gleitkommazahlen übergeben willst müsstest du die gesamtPZ als double definieren und die einzelen args natürlich in double statt in int konvertieren.



fjordschritt hat gesagt.:


> ```
> {
> System.out.println("....");
> }
> ...



das ist schonmal ein guter Ansatz .



fjordschritt hat gesagt.:


> Ich verstehe aber nicht was du mit "for" und dem "if" danach meinst.


Ich versuch das mal in Worte zu fassen:
wir haben eine Anzahl X an Parametern, die über das Array args[] an die main() Methode übergeben werden. In deinem Fall 12 (von 0 bis 11). Diese werden mit der For-Schleife durchlaufen. Die Schleife fasst in jedem Durchlauf 2 Paramenter zusammen (1 Blatt) und addiert das zu der Gesamtpunktezahl. Wenn dieses Blatt kleiner als 10 ist wurden ja die 50% nicht erreicht und der Integer sheetFailed wird um eins inkrementiert. Wenn sheetFailed also irgendwann 2 annehmen sollte, wissen wir für unsere IF-Abfragen auf jedenfall, dass keine 5 von 6 Blätter mit ausreichend absolviert wurden.



fjordschritt hat gesagt.:


> Was mir auch fehlt sind die args... Kann man trotzdem so wie Du es dann gemacht hast, eine Parametereingabe machen?


Die args zähle ich zusammen mit i in der Schleife hoch.
z.B. erster Schleifendurchlauf:
gesamtPZ = gesamtPZ + Integer.parseInt(args[0]) + Integer.parseInt(args[1]);

d.h.:
gesamtPZ = 0 + erster Parameter + zweiter Parameter

nachdem i nach jedem Schleifendurchlauf um 2 erhöht wäre das beim zweiten Durchlauf dann:
gesamtPZ = Summe aus ersten Durchlauf + dritter Parameter + vierter Parameter


Hoffe es ist halbwegs verständlich erklärt.

grüße andi


----------



## babuschka (7. Dez 2009)

...


----------



## nrg (7. Dez 2009)

naja darauf musst du jetzt noch selber kommen. es sollte klar sein, dass der compiler mit


```
if (Gesamte Punktezahl > 60) .....
```

nicht viel anfangen kann. Da musst du natürlich Bedingungen mit Hilfe der ermittelten Variablen schreiben. Ausserdem solltest du nochmal genau überlegen, wo du welche Ausgabe schreibst.
Falls der logische Operator noch unklar sein sollten:
&& = Beide Ausdrücke liefern true

grüße
nrg

EDIT: ausserdem hast du in deinem Schleifenkopf was wichtiges vergessen.


nrg hat gesagt.:


> ```
> for (zähler i deklarieren/definieren und mit 0 initialisieren; i < args.length; i += 2){
> ...
> }
> ```


----------



## NIBE (7. Dez 2009)

Hier steht das es ganze Zahlen sind:



fjordschritt hat gesagt.:


> Das Programm bekommt beim Start zwölf ganze Zahlen ∈ [0, 10] als Parameter übergeben.



Sitze übrigens am selben Programm bin mittlerweile aber fertig.Das Kriterium ist übrigens das man pro Blatt 10% sprich 2 Punkte erhalten muss nicht 10. Es geht um 10%des Blattes nicht der Gesamtpunktzahl. Hoffe das Hilft dir.


----------



## Murmeltier1985 (7. Dez 2009)

Hallo, ich denke das die lösung von "nrg" für unsere Vorlesung etwas zu kompliziert gelöst ist. Und da wir die Begriffe noch nicht hatten und du sie garantiert nicht richtig erklären kannst, würde ich es einfacher lösen.

Zeile 4-33 kannst du schonmal komplett löschen ;-)

und das mit den Bedingungen ist eigentlich rel. einfach.

&& heißt "und" das hast du ja schon rel. logisch verwendet.
| heißt "oder" das brauchst du für die Mindestpunktzahl der Blätter. 
und bei der letzten Ausgabe musst du nur beide Bedingungen "zusammenführen".

und nach jedem if dann dein system.out..... setzten.


----------



## nrg (7. Dez 2009)

NIBE hat gesagt.:


> Das Kriterium ist übrigens das man pro Blatt 10% sprich 2 Punkte erhalten muss nicht 10. Es geht um 10%des Blattes nicht der Gesamtpunktzahl. Hoffe das Hilft dir.



Also wenn ich das richtig verstanden habe gibt es auf ein Blatt maximal 20 Punkte. Ein "ausreichend" ist für mich mindestens 50%, also mindestens 10 Punkte.
Wenn für eure Aufgabe ein "ausreichend" auf 10% festgelegt ist, muss man bei meiner Lösung ja lediglich die Bedingung, für die eventuelle Erhöhung von sheetsFailed, anpassen. (in seiner Aufgabe stand leider keine genaue Definition für "ausreichend")

aber gut. ich halt mich jetzt erstmal zurück 

grüße
nrg


----------



## babuschka (7. Dez 2009)

Leider hilft es mir nicht ganz. Kannst Du mir weiterhelfen, wo ich einen Fehler habe und mir das javatechnisch zeigen?


----------



## nrg (7. Dez 2009)

wenn du mir einen Ansatz von dir zeigst gerne . oder vllt können die aus deiner Vorlesung dir besser weiterhelfen, weil sie aufm gleichen wissensstand sind.


----------



## Murmeltier1985 (7. Dez 2009)

...


----------



## babuschka (7. Dez 2009)

Ist super erklärt, jedoch gibt er mir bei den beiden letzten Kriterien nicht das richtige aus.


----------



## Murmeltier1985 (7. Dez 2009)

entweder du nimmst aufgabenzettel12 oder aufgabenzettel2. Immer genau den gleichen begriff verwenden


----------



## babuschka (7. Dez 2009)

Wo habe ich einmal 12 genommen?! Finde grad nicht den Fehler!


----------



## Murmeltier1985 (7. Dez 2009)

bei deiner 3 if abfragen musst du ein "oder" und kein "und" verwenden. du willst ja ausdrücken, dass es schon zum nichtbestehen langt, wenn einer!! der aufgabenzettel weniger als 2 punkte hat. also if blatt1<2 | blatt2<2 etc... 

Sonst heißt es ja, dass er nur nicht bestanden hat wenn er alle mit weniger als 2 punkten hat.


----------



## Murmeltier1985 (7. Dez 2009)

Upps, verlesen.... ist schon richtig so  hast die blätter richtig benannt


----------



## nrg (7. Dez 2009)

fjordschritt hat gesagt.:


> ```
> if (aufgabenzettel1<2 && aufgabenzettel2<2 && aufgabenzettel3<2 && aufgabenzettel4<2 && aufgabenzettel5<2 && aufgabenzettel6<2)
> {
> System.out.println("Schein nicht gewaehrt: Es wurden nicht 5 von 6 Zettel ausreichend bearbeitet");
> ...



passt meiner meinung nach noch nicht ganz.


----------



## NIBE (7. Dez 2009)

Kann mich nrg nur anschließen, so wie es hier dargestellt wird wäre jeder Zettel nicht ausrreichend bearbeitet. Man muss aber auch die Tatsache mit einbeziehen das man zwar die 60pkt hat aber weniger Zettel bearbeitet hat was ja auch zum nicht erhalten des Scheins führt.


----------



## Murmeltier1985 (8. Dez 2009)

super, stimmt. Bin auch voll nicht drauf gekommen.


```
if (blatt1+blatt2+blatt3+blatt4+blatt5+blatt6 >= 60 && blatt1>=2 && blatt2>=2 && blatt3>=2 && blatt4>=2 && blatt5>=2 && blatt6>=2 ) 
        {
            System.out.println("Glueckwunsch! Sie erhalten den Schein");
        }
```

kann ich hier eigentlich auch mit "and" arbeiten? Find das so ein bissl unübersichtlich wenn ich die zwei Bedingungen nacheinander schreibe.


----------



## nrg (8. Dez 2009)

ja. sollte kein problem sein. für eine bessere übersicht könntest du es zb so schreiben:


```
if ((blatt1+blatt2+blatt3+blatt4+blatt5+blatt6 >= 60) && 
(blatt1>=2 && blatt2>=2 && blatt3>=2 && blatt4>=2 && blatt5>=2 && blatt6>=2)) 
        {
            System.out.println("Glueckwunsch! Sie erhalten den Schein");
        }
```


----------



## babuschka (8. Dez 2009)

...


----------



## Murmeltier1985 (8. Dez 2009)

so, beim längeren überlegen ist mir ja noch eingefallen, dass wir die bedingung, dass nur 5 von 6 bättern mehr als 2 punkte haben müssen mir reinnehmen sollen. Wie macht man das denn? Gibt es sowas wie "mindestens" in java?  

Hab ja bis jetzt:


```
if (blatt1+blatt2+blatt3+blatt4+blatt5+blatt6 >= 60 && blatt1>=2 && blatt2>=2 && blatt3>=2 && blatt4>=2 && blatt5>=2 && blatt6>=2 ) 
        {
            System.out.println("Glueckwunsch! Sie erhalten den Schein");
```

und das ist ja nicht richtig, da nur 5 von 6 mehr als 2 Punkte haben müssen. Eins kann ja auch 0 Punkte haben, solange die Summe mehr als 60 Punkte hat.


----------



## babuschka (8. Dez 2009)

So, hab es geschafft. Vielen Dank für die Hilfe!


----------



## Murmeltier1985 (8. Dez 2009)

Jetzt bräuchte ich aber hilfe.....


----------



## nrg (8. Dez 2009)

mit fällt dazu echt keine bessere lösung ein, als eine reihe von ifs, die einen zähler (für blätter, die nicht mit mindestens ausreichend absolviert wurden) hochzählt. Vorausgesetzt man nimmt keine Arrays!! In meiner Lösung habe ich das mit dem Array args[] gelöst, aber das wolltet ihr ja auch nicht annehmen . dann fällt mir dazu nichts mehr rein, ausser:


```
int sheetsFailed = 0;
if (blatt1 < 2) sheetsFailed += 1;
if (blatt2 < 2) sheetsFailed += 1;
if (blatt3 < 2) sheetsFailed += 1;
.....
if (blatt1+blatt2+blatt3+blatt4+blatt5+blatt6 >= 60 && sheetsFailed < 2 ) 
        {
            System.out.println("Glueckwunsch! Sie erhalten den Schein");
```


----------



## Murmeltier1985 (8. Dez 2009)

hört sich ganz gut an. 
Kannst du mir den Begriff: sheetsFailed += 1; vieleicht erkären? 


_______________________________________________________________________

So, und nun aus gegebenen Anlass: An alle Teilnehmer der Vorlesung "Grundlagen der Programmierung" der TU Clausthal:

Es ist absolut sinnlos meinen Quelltext zu übernehmen. Die Tutoren sind zum einen in diesem Forum selbst unterwegs und zum anderen wissen die, welche Person sich hinter meinem Nick verbirgt.
Macht euch selbst nen Kopf und postet eure Ansätze.


----------



## nrg (8. Dez 2009)

ist einfach eine verkürzte schreibweiße dafür. 

```
sheetsFailed = sheetsFailed + 1;
```


noch eine schreibweiße wäre zb:

```
sheetsFailed++;
```

EDIT: in worten: erhört die variable in diesem fall um 1


----------



## Murmeltier1985 (8. Dez 2009)

sehr schön, das programm funktioniert. Danke

Aber so ganz genau hab ich das noch nicht verstanden. Warum muss er zu den variablen immer "1" dazuaddieren? und "sheetsFailed" bedeutet genau?


----------



## nrg (8. Dez 2009)

Variablennamen sind frei wählbar. hab ich halt so benannt, weil sie zählt wieviel Blätter nicht mit mindestens ausreichend bearbeitet wurden.

Ich fass das mal in Worte:
Prüfe ab, ob das erste Blatt nicht mit mindestens ausreichend bearbeitet wurde, wenn ja addiere zu der Variablen 1.
Prüfe ab, ob das zweite Blatt nicht mit mindestens ausreichend bearbeitet wurde, wenn ja addiere zu der Variablen 1.
Prüfe ab, ob das dritte Blatt nicht mit mindestens ausreichend bearbeitet wurde, wenn ja addiere zu der Variablen 1.
......
Danach weisst du anhand dem Wert in der Variable genau wieviel Blätter nicht mit mindestens ausreichend bearbeitet wurden und kannst darauf abfragen.


----------



## javimka (8. Dez 2009)

Murmeltier1985 hat gesagt.:


> So, und nun aus gegebenen Anlass: An alle Teilnehmer der Vorlesung "Grundlagen der Programmierung" der TU Clausthal:
> 
> Es ist absolut sinnlos meinen Quelltext zu übernehmen. Die Tutoren sind zum einen in diesem Forum selbst unterwegs und zum anderen wissen die, welche Person sich hinter meinem Nick verbirgt.
> Alle, die die erste Aufgabe von mir abgeschrieben haben, haben 0 Punkte bekommen. Ich hingegen die volle Punktzahl. Also, meine Quelltexte die ich poste, sind meine!!!! also Urherberrechtlich geschützt, macht euch selbst nen Kopf und postet eure Ansätze. Hilfe braucht ja jeder, aber eine 1 zu 1 Kopie ist einfach dämlich!!!



He, was soll denn das heissen? :autsch:
Wenn du hier was postest, ist das für alle. Wenn wir antworten, ist das insbesondere für alle!


----------



## eRaaaa (8. Dez 2009)

javimka hat gesagt.:


> Wenn wir antworten, ist das insbesondere für alle!



sind deine beiträge denn etwa nicht urheberrechtlich geschützt ? 

also mal davon abgesehen, dass ich diesen konkurrenzkampf zwischen studis nicht nachvollziehen kann (du willst doch vllt auch irgendwann mal hilfe von einem studi haben wollen?), wenn du eh die volle punktzahl bekommst, die tutoren wissen wer du bist, die tutoren den anderne 0 punkte geben, wo ist dann DEIN problem? :autsch:

sorry 4 offtopic


----------



## Murmeltier1985 (8. Dez 2009)

<war vielleicht ein bissl böse formuliert. Stimmt schon, ist schon jeder selber schuld wenn er alles 1 zu 1 übernimmt. Wer will soll es ruhig übernehmen. War halt nen bissl angegräzt, weil es echt sehr viele waren, die meine Version hatten. Und einfach sinnlos abschreiben find ich halt nen bissl blöd. Die Leute könnten ja wenigstens ihren Ansatz posten.


----------

