#include // Für printf und scanf #include // Für malloc und free /* ### Aufgabenstellung: "Das dynamische Zahlen-Array" **Ziel:** Schreibe ein C-Programm, das folgende Schritte ausführt: 1. Fragt den Benutzer nach der Anzahl von Zahlen (`n`), die eingegeben werden sollen. 2. Reserviert dynamisch Speicher für genau diese `n` Ganzzahlen (`int`) mit Hilfe von `malloc`. 3. Liest `n` Zahlen vom Benutzer ein und speichert sie im reservierten Speicher. 4. Gehe durch den reservierten Speicher mit Hilfe eines **Zeigers** (nicht über Array-Indizes wie `array[i]`, sondern durch Erhöhen des Zeigers) und gib die Zahlen aus. 5. Berechne während des Ausgebens die Summe aller eingegebenen Zahlen. 6. Gib die Summe aus und gib den reservierten Speicher wieder frei (`free`). */ int main() { int n; // Anzahl der Elemente // 1. Größe abfragen printf("Wie viele Zahlen möchtest du eingeben? "); scanf("%d", &n) // Speicher reservieren int *zahlen = malloc(n * sizeof(int)); // Sicherheitscheck: Hat malloc erfolgreich Speicher zugewiesen? if (zahlen == NULL) { printf("Speicher konnte nicht reserviert werden!\n"); return 1; } // 3. Eingabe über Zeiger-Iteration int *p = zahlen; // p zeigt auf den Anfang des Arrays printf("Gib %d Zahlen ein:\n", n); // Wir iterieren durch den Speicher, indem wir p erhöhen (p++) for (int i = 0; i < n; i++) { scanf("%d", p); // Speichert die Zahl an der aktuellen Zeiger-Position p++; // Zeiger auf das nächste int verschieben (p = p + 1) } // 4. Ausgabe und Summe berechnen über Zeiger-Iteration p = zahlen; // Wir setzen den Zeiger wieder auf den Anfang zurück! long summe = 0; // Summe in 'long' speichern, um Überläufe zu vermeiden for (int i = 0; i < n; i++) { printf("Zahl %d: %d\n", i + 1, *p); // *p gibt den Wert an der aktuellen Position aus summe += *p; // Summiere den aktuellen Wert p++; // Zeiger auf das nächste Element verschieben } printf("\nDie Summe aller Zahlen ist: %ld\n", summe); // 5. Speicher freigeben (free) free(zahlen); return 0; }