Menu
Coddy logo textTech

Datenanalyse

Teil des Abschnitts Logik & Ablauf der C#-Journey von Coddy. Lektion 42 von 66.

challenge icon

Aufgabe

Mittel

Da wir nun Schülerdaten erfassen und aktualisieren können, implementieren wir die Analysefunktionalität, um Erkenntnisse aus den Bewertungen zu gewinnen. Erstelle eine Klasse namens DataAnalyzer mit diesen Methoden:

  1. CalculateStudentAverage(int[][] scoreGrid, int studentIndex): Berechnet den Durchschnittswert für einen bestimmten Schüler und gibt ihn zurück. Gibt -1 zurück, wenn studentIndex ungültig ist.
  2. CalculateAssignmentAverage(int[][] scoreGrid, int assignmentIndex): Berechnet den Durchschnittswert für eine bestimmte Aufgabe über alle Schüler hinweg und gibt ihn zurück. Gibt -1 zurück, wenn assignmentIndex ungültig ist.
  3. FindHighestScore(int[][] scoreGrid): Gibt ein Array aus drei Ganzzahlen zurück, das die höchste Punktzahl und ihre Position darstellt: [studentIndex, assignmentIndex, score]. Wenn mehrere Einträge dieselbe höchste Punktzahl haben, gib den zuerst gefundenen zurück.

Hinweis: Berücksichtige bei der Berechnung von Durchschnittswerten nur gültige Punktzahlen (0-100). Ignoriere nicht bewertete Aufgaben (-1).

Probier es selbst

using System; // Diese Zeile nicht löschen
public class DataAnalyzer
{
    public static double CalculateStudentAverage(int[][] scoreGrid, int studentIndex)
    {
        // Schreibe deinen Code hier
        
    }
    
    public static double CalculateAssignmentAverage(int[][] scoreGrid, int assignmentIndex)
    {
        // Schreibe deinen Code hier
        
    }
    
    public static int[] FindHighestScore(int[][] scoreGrid)
    {
        // Schreibe deinen Code hier
        
    }
}

// Required for testing - do not modify
public class DataCollector
{
    public static int[][] CreateScoreGrid(int students, int assignments)
    {
        int[][] scoreGrid = new int[students][];
        for (int i = 0; i < students; i++)
        {
            scoreGrid[i] = new int[assignments];
        }
        return scoreGrid;
    }
    
    public static bool ValidateScore(int score)
    {
        return score >= 0 && score <= 100;
    }
    
    public static int[][] PopulateWithDefaultValues(int[][] scoreGrid)
    {
        for (int i = 0; i < scoreGrid.Length; i++)
        {
            for (int j = 0; j < scoreGrid[i].Length; j++)
            {
                scoreGrid[i][j] = -1;
            }
        }
        return scoreGrid;
    }
}

public class DataEntry
{
    public static int SetStudentScore(int[][] scoreGrid, int studentIndex, int assignmentIndex, int score)
    {
        // Prüfe auf Indizes außerhalb der Grenzen
        if (studentIndex < 0 || studentIndex >= scoreGrid.Length || 
            assignmentIndex < 0 || assignmentIndex >= scoreGrid[studentIndex].Length)
        {
            return -1;
        }
        
        // Validate the score
        if (!DataCollector.ValidateScore(score))
        {
            return -2;
        }
        
        // Set the score
        scoreGrid[studentIndex][assignmentIndex] = score;
        return 0;
    }
    
    public static int UpdateAllScores(int[][] scoreGrid, int[] studentIndices, int assignmentIndex, int score)
    {
        int successCount = 0;
        
        for (int i = 0; i < studentIndices.Length; i++)
        {
            int result = SetStudentScore(scoreGrid, studentIndices[i], assignmentIndex, score);
            if (result == 0)
            {
                successCount++;
            }
        }
        
        return successCount;
    }
}

Alle Lektionen in Logik & Ablauf

Übe selbstständig: Online-C#-Compiler