multiarray

Neue Frage »

Auf diesen Beitrag antworten »
neuling96 multiarray

Guten Abend,
bei der Aufgabe komme ich kein stück vorwärts
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
public class Klausurpunkte {

    public static int[][] studentenPunkte = new int[42][8];

    public static void main(String[] args) {
        setPunkte(21, 0, 6);
        System.out.println(getPunkte(21, 0));           // Ausgabe: 6
        setPunkte(21, 1, 3);
        setPunkte(21, 2, 5);
        setPunkte(21, 3, 7);
        setPunkte(21, 4, 11);
        setPunkte(21, 5, 2);
        setPunkte(21, 6, 0);
        setPunkte(21, 7, 5);
        System.out.println(gesamtPunktezahl(21));       // Ausgabe: 39
        setPunkte(12, 4, 5);
        setPunkte(34, 4, 5);
        System.out.println(durchschnittsPunktezahl(4)); // Ausgabe: 0.5
    }

    /**
     * Gibt die Punktezahl einer bestimmten Aufgabe für einen bestimmten
     * Studenten zurück.
     *
     * @param student Spezifiziert die Nummer des Studenten dessen Punktezahl
     * zurückgegeben werden soll.
     * @param aufgabe Spezifiziert die Nummer der Aufgabe deren Punktezahl
     * zurückgegeben werden soll.
     *
     * @return Die von Student student bei Aufgabe aufgabe erreichten Punkte.
     */
    public static int getPunkte(int student, int aufgabe) {
		// hier ergänzen!
    }

    /**
     * Setzt die Punktezahl einer bestimmten Aufgabe für einen bestimmten
     * Studenten auf einen bestimmten Wert.
     *
     * @param student Spezifiziert die Nummer des Studenten dessen Punktezahl
     * gesetzt werden soll.
     * @param aufgabe Spezifiziert die Nummer der Aufgabe deren Punktezahl
     * gesetzt werden soll.
     * @param punkte Spezifiziert die Anzahl der erreichten Punkte.
     */
    public static void setPunkte(int student, int aufgabe, int punkte) {
		// hier ergänzen!
    }

    /**
     * Berechnet die Summe von Ãœbungspunkten von Student student.
     *
     * @param student Spezifiziert die Nummer des Studenten dessen
     * Gesamtpunktezahl zurückgegeben werden soll.
     * @return Die Summe aller Ãœbungspunkte von Student student.
     */
    public static int gesamtPunktezahl(int student) {
		// hier ergänzen!
    }

    /**
     * Berechnet die Anzahl der Punkte die im Schnitt von allen Studenten bei
     * der spezifizierten Aufgabe aufgabe erreicht wurden.
     *
     * @param aufgabe Spezifiziert die Aufgabe deren durchschnittlich erreichte
     * Punktezahl zurückgegeben werden soll.
     * @return Die im Durchschnitt erreichte Punktezahl bei Aufgabe aufgabe.
     */
    public static double durchschnittsPunktezahl(int aufgabe) {
		// hier ergänzen!
    }
}


Ich habe ehrlich keine ahung wie ich anfangen kann

erst entwurf:
code:
1:
2:
3:
4:
5:
public static int getPunkte(int student, int aufgabe){
int points;
studentenPunkte [student][aufgabe]=points;  
return punkte
   } 


code:
1:
2:
3:
4:
5:
public static void setPunkte(int student, int aufgabe, int punkte) {
  int ergo;
 getPunkte(student, aufgabe);
 points=punkte ;
   } 
 
Auf diesen Beitrag antworten »
eulerscheZahl

bei getPunkte willst du doch nur Daten abholen, die im Array studentenPunkte hinterlegt sind.
also return studentenPunkte[student][aufgabe]; - das ist tatsächlich schon alles.

bei set muss etwas an besagter Position im Array abgelegt werden.

Zitat:
public static int getPunkte(int student, int aufgabe){
int points;
studentenPunkte [student][aufgabe]=points;
return punkte
}

bei einer Methode mit "get" im Namen, ist es selten klug, Variableninhalte zu ändern. Außerdem ist weder points noch punkte definiert.
Auf diesen Beitrag antworten »
neuling96

public static void setPunkte(int student, int aufgabe, int punkte) {
studentenPunkte [student][aufgabe]=getPunkte(student, aufgabe);
}

meinst du so?
Auf diesen Beitrag antworten »
eulerscheZahl

Nein, damit überschreibst du den Eintrag ja mit dem, was vorher auch schon drinstand.

code:
1:
2:
3:
public static void setPunkte(int student, int aufgabe, int punkte) {
    studentenPunkte [student][aufgabe] = punkte;
}
 
Auf diesen Beitrag antworten »
neuling96

Zitat:
Original von eulerscheZahl
Nein, damit überschreibst du den Eintrag ja mit dem, was vorher auch schon drinstand.

code:
1:
2:
3:
public static void setPunkte(int student, int aufgabe, int punkte) {
    studentenPunkte [student][aufgabe] = punkte;
}


d.h ab sofort ist studentenPunkte [student][aufgabe] = punkte; fest gelegt ?

void->bedeutet
dass keine Daten übergeben werden oder der Typ der Daten nicht angegeben ist?!


code:
1:
2:
3:
4:
5:
6:
public static int gesamtPunktezahl(int student) {
int sum;
 for (int i=0;i<8;i++) {
 sum += studentenPunkte [student][i] ;
   }
}
Auf diesen Beitrag antworten »
eulerscheZahl

studentenPunkte [student][aufgabe] = punkte gilt so lange, bis man wieder etwas anderes hineinschreibt.

void heißt, dass díe Funktion keinen Rückgabewert hat.

Zur Summenberechnung:
code:
1:
2:
3:
4:
5:
6:
7:
public static int gesamtPunktezahl(int student) {
    int sum = 0; //initialisieren
    for (int i=0;i<8;i++) {
        sum += studentenPunkte [student][i] ;
    }
    return sum; //nicht vergessen, das Ergebnis zurückzugeben
}
Auf diesen Beitrag antworten »
neuling96

code:
1:
2:
3:
4:
5:
6:
7:
public static double durchschnittsPunktezahl(int aufgabe) {
	double sum;
        for (int i=0; i<42;i++) 
        sum += studentenPunkte [i][aufgabe] ;
    }
  return sum/42 ;
}
Auf diesen Beitrag antworten »
neuling96

int sum = 0; //initialisieren

ich dachte wenn man int sum, hinschreibt wird automatische int sum =0 gesetzt?
Auf diesen Beitrag antworten »
eulerscheZahl

Es kommt darauf an, wo du das schreibst.
Für Klassenvariablen ist das zutreffend, wenn die Variable aber lokal in der Funktion erstellt wird, dann musst du sie Initialisieren.
Auf diesen Beitrag antworten »
neuling96

code:
1:
2:
3:
4:
5:
6:
7:
public static double durchschnittsPunktezahl(int aufgabe) {
	double sum= 0;
        for (int i=0; i<42;i++) 
        sum += studentenPunkte [i][aufgabe] ;
    }
  return sum/42 ;
}


und fertig?
Auf diesen Beitrag antworten »
eulerscheZahl

Sieht gut aus Daumen hoch

Ein allgemeiner Rat:
nutze wenn möglich keine festen Zahlen, sondern Konstanten
Wenn z.B. ein neuer Student dazukommt, musst du das nicht nur oben bei der Arraydefinition ändern, sondern auch bei der Berechnung des Durchschnitts.

Die 42 kriegst du mit studentenPunkte.length
Die 8 mit studentenPunkte[0].length
Auf diesen Beitrag antworten »
neuling96

vielen dank Wink
 
Neue Frage »
Antworten »


Verwandte Themen