Menu
Coddy logo textTech

Data Analysis

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

challenge icon

Aufgabe

Mittel

Nun, da wir Schülerdaten sammeln und aktualisieren können, implementieren wir die Analysefunktionalität, um Einblicke in die Noten zu gewinnen. Erstellen Sie eine Klasse namens DataAnalyzer mit diesen Methoden:

  1. CalculateStudentAverage(int[][] scoreGrid, int studentIndex): Berechnet und gibt den Durchschnittswert für einen bestimmten Schüler zurück. Geben Sie -1 zurück, wenn der studentIndex ungültig ist.
  2. CalculateAssignmentAverage(int[][] scoreGrid, int assignmentIndex): Berechnet und gibt den Durchschnittswert für eine bestimmte Aufgabe über alle Schüler hinweg zurück. Geben Sie -1 zurück, wenn der assignmentIndex ungültig ist.
  3. FindHighestScore(int[][] scoreGrid): Gibt ein Array von drei Ganzzahlen zurück, das die höchste Note und ihren Standort darstellt: [studentIndex, assignmentIndex, score]. Wenn mehrere Einträge die gleiche höchste Note haben, geben Sie den ersten gefundenen zurück.

Hinweis: Beim Berechnen der Durchschnitte berücksichtigen Sie nur gültige Noten (0-100). Ignorieren Sie unbewertete 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