
Ömer sagt:
Das ist es! Die letzte Unit des gesamten Kurses. Du hast von Hello World bis zu structs alles gelernt. Jetzt ist es Zeit, alles in einem echten Projekt zusammenzuführen. Ich bin stolz auf dich! 🎓
Alle Konzepte kombinieren
Strukturiertes Design
Vollständiges Programm
Kurs-Abschluss 🎓
🎯 Das Abschlussprojekt: Kontaktverwaltung
Du schreibst eine kleine Kontaktverwaltung – ein Mini-Adressbuch. Das Projekt nutzt structs, Arrays, Funktionen, Schleifen, Ein-/Ausgabe und Strings aus allen 7 Kapiteln:
kontaktverwaltung.cC
#include <stdio.h> #include <string.h> #define MAX_KONTAKTE 10 typedef struct { char name[40]; char telefon[20]; int alter; } Kontakt; /* Funktion: Kontakt anzeigen */ void zeige(Kontakt k) { printf("%-20s | Tel: %-15s | Alter: %d\n", k.name, k.telefon, k.alter); } /* Funktion: Suche nach Name */ int suche(Kontakt k[], int n, char *name) { for (int i=0; i<n; i++) if (strcmp(k[i].name, name) == 0) return i; return -1; // nicht gefunden } int main() { Kontakt buch[MAX_KONTAKTE] = { {"Oemer", "0664-123456", 17}, {"Anna", "0699-654321", 16}, {"Max", "0650-112233", 18} }; int anzahl = 3; /* Alle anzeigen */ printf("=== Adressbuch (%d Kontakte) ===\n", anzahl); for (int i=0; i<anzahl; i++) zeige(buch[i]); /* Suche */ int idx = suche(buch, anzahl, "Anna"); if (idx != -1) printf("Gefunden: "), zeige(buch[idx]); return 0; }
🎓
Kurs abgeschlossen!
Du hast alle 30 Units von „Ömer erklärt C" erfolgreich durchgearbeitet!
✅ Kapitel 1 – Einstieg & Grundlagen
✅ Kapitel 2 – Operatoren & Entscheidungen
✅ Kapitel 3 – Schleifen & Wiederholungen
✅ Kapitel 4 – Funktionen & Strukturierung
✅ Kapitel 5 – Arrays & Strings
✅ Kapitel 6 – Zeiger & Speicher
✅ Kapitel 7 – Fortgeschrittene Konzepte
Du bist bereit für echte C-Projekte!Glückwunsch – du kannst jetzt C programmieren! 🚀
✏️ Abschlussübungen
Aufgabe 1
Programm erweitern
Erweitere das Kontaktverwaltungsprogramm um:
- Eine Funktion
alle_ausgeben(Kontakt k[], int n) - Eine Möglichkeit, neue Kontakte über scanf hinzuzufügen
- Ein Menü (do-while) mit Optionen: Anzeigen, Suchen, Beenden
Nutze do-while für das Menü, switch-case für die Auswahl, structs für die Kontakte und Funktionen für jede Aufgabe!
Aufgabe 2 – Freies Projekt
Wähle ein eigenes Mini-Projekt
Wähle eines der folgenden Projekte und setze es vollständig um:
- 📚 Buchverwaltung: Bücher mit Titel, Autor, Jahr, ISBN speichern und suchen
- 🎮 Zahlenraten: Zufallszahl (srand/rand) raten mit Versuche-Zähler und High-Score
- 📊 Notenrechner: Noten für mehrere Fächer, Durchschnitt, beste/schlechteste Note
- 🧮 Taschenrechner 2.0: Menü-gesteuerter Taschenrechner mit Verlauf (Array)
Aufgabe 3 – Geführtes Projekt
Zahlenraten mit High-Score
Ein vollständiges Spiel als Gerüst – fülle die markierten Stellen aus und bringe das Programm zum Laufen. Es kombiniert alles aus dem Kurs: Structs, Funktionen, Schleifen, Arrays und Zufallszahlen:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define MAX_VERSUCHE 7
#define MAX_RUNDEN 3
typedef struct {
int runde;
int versuche;
int gewonnen;
} Ergebnis;
int spiele_runde(int runde) {
srand(time(NULL) + runde); /* Zufallsseed */
int gesucht = rand() % 100 + 1; /* 1 bis 100 */
int eingabe, versuche = 0;
printf("\n--- Runde %d ---\n", runde);
printf("Ich denke an eine Zahl von 1 bis 100. Du hast %d Versuche!\n", MAX_VERSUCHE);
do {
printf("Versuch %d: ", versuche + 1);
scanf("%d", &eingabe);
versuche++;
if (eingabe < gesucht) printf("Zu klein!\n");
else if (eingabe > gesucht) printf("Zu gross!\n");
else {
printf("Richtig in %d Versuchen!\n", versuche);
return versuche; /* gewonnen */
}
} while (versuche < MAX_VERSUCHE);
printf("Verloren! Die Zahl war %d.\n", gesucht);
return 0; /* verloren */
}
int main() {
Ergebnis ergebnisse[MAX_RUNDEN];
int gewonnene_runden = 0;
printf("=== ZAHLENRATEN – %d Runden ===\n", MAX_RUNDEN);
for (int i = 0; i < MAX_RUNDEN; i++) {
int v = spiele_runde(i + 1);
ergebnisse[i].runde = i + 1;
ergebnisse[i].versuche = v;
ergebnisse[i].gewonnen = (v > 0);
if (v > 0) gewonnene_runden++;
}
/* Auswertung */
printf("\n=== AUSWERTUNG ===\n");
for (int i = 0; i < MAX_RUNDEN; i++) {
if (ergebnisse[i].gewonnen)
printf("Runde %d: gewonnen in %d Versuchen\n",
ergebnisse[i].runde, ergebnisse[i].versuche);
else
printf("Runde %d: verloren\n", ergebnisse[i].runde);
}
printf("Ergebnis: %d von %d Runden gewonnen\n", gewonnene_runden, MAX_RUNDEN);
return 0;
}
rand() % 100 + 1 ergibt eine Zufallszahl von 1 bis 100. srand(time(NULL)) sorgt dafür, dass jedes Mal andere Zahlen kommen. Das ist dein erstes vollständiges C-Spiel!