Menu
Coddy logo textTech

Rückblick: Dynamische Arrays

Teil des Abschnitts Logic & Flow der C-Journey von Coddy — Lektion 37 von 63.

challenge icon

Aufgabe

Einfach

Schreiben Sie ein C-Programm, das ein dynamisches Array basierend auf Benutzereingaben erstellt, die Daten verarbeitet und eine ordnungsgemäße Speicherverwaltung demonstriert. Ihr Programm sollte:

  1. Einen Ganzzahlwert n vom Benutzer einlesen, der die Anzahl der zu speichernden Elemente darstellt
  2. malloc() zusammen mit sizeof() verwenden, um dynamisch Speicher für ein Array von n Ganzzahlen zu reservieren
  3. Überprüfen, ob die Speicherreservierung erfolgreich war - falls sie fehlschlägt, geben Sie Memory allocation failed! aus und beenden Sie das Programm
  4. Wenn die Reservierung erfolgreich ist, geben Sie Array of size [n] created successfully! aus
  5. n Ganzzahlwerte vom Benutzer einlesen und im reservierten Array speichern
  6. Die Summe aller Elemente berechnen und im Format Sum: [value] ausgeben
  7. Den Minimalwert finden und im Format Minimum: [value] ausgeben
  8. Zählen, wie viele Elemente größer als der Durchschnitt sind, und im Format Elements above average: [count] ausgeben
  9. Den gesamten verwendeten Speicher in Bytes im Format Memory used: [bytes] bytes ausgeben
  10. free() verwenden, um den Speicher wieder freizugeben
  11. Memory successfully freed! ausgeben, um die ordnungsgemäße Bereinigung zu bestätigen

Denken Sie daran, den Header <stdlib.h> einzubinden, um malloc() und free() verwenden zu können. Diese Herausforderung testet Ihr vollständiges Verständnis der dynamischen Speicherverwaltung, von der Reservierung über die Nutzung bis hin zur ordnungsgemäßen Bereinigung.

Wenn die Eingabe zum Beispiel wie folgt aussieht:

5
12 8 15 3 20

Sollte Ihre Ausgabe wie folgt aussehen:

Array of size 5 created successfully!
Sum: 58
Minimum: 3
Elements above average: 2
Memory used: 20 bytes
Memory successfully freed!

Diese umfassende Herausforderung demonstriert den vollständigen Lebenszyklus der dynamischen Speicherverwaltung, während gleichzeitig sinnvolle Datenverarbeitungsoperationen auf dem reservierten Array durchgeführt werden.

Probier es selbst

#include <stdio.h>
#include <stdlib.h>

int main() {
    // Lies die Anzahl der Elemente ein
    int n;
    scanf("%d", &n);
    
    // TODO: Schreibe deinen Code unten
    // 1. Reserviere Speicher für n Ganzzahlen mit malloc()
    // 2. Überprüfe, ob die Speicherreservierung erfolgreich war
    // 3. Lies n Ganzzahlen in das Array ein
    // 4. Berechne die Summe, finde das Minimum, zähle Elemente über dem Durchschnitt
    // 5. Gib die Ergebnisse aus und gib den Speicher frei
    
    return 0;
}

Alle Lektionen in Logic & Flow