Menu
Coddy logo textTech

Zusammenfassung: Struct ändern - Ptr

Teil des Abschnitts Logik & Ablauf der C-Journey von Coddy. Lektion 49 von 63.

challenge icon

Aufgabe

Einfach

Erstelle ein C-Programm, das ein vollständiges Mitarbeiterverwaltungssystem unter Verwendung dynamischer Speicherzuweisung, Strukturzeiger und Funktionen demonstriert. Dein Programm sollte:

  1. Eine struct namens Employee mit den folgenden Mitgliedern definieren:
    • Eine Ganzzahl id zum Speichern der Mitarbeiter-ID
    • Ein Zeichen-Array name mit der Größe 50 zum Speichern des Mitarbeiternamens
    • Ein Zeichen-Array department mit der Größe 30 zum Speichern des Abteilungsnamens
    • Eine Gleitkommazahl salary zum Speichern des Mitarbeitergehalts
    • Eine Ganzzahl yearsOfService zum Speichern der Dienstjahre
  2. Eine Funktion namens fillEmployeeData schreiben, die:
    • Einen Zeiger auf eine Employee-Struktur als Parameter entgegennimmt
    • Mitarbeiterinformationen in dieser Reihenfolge von der Eingabe einliest: ID, Name, Abteilung, Gehalt, Dienstjahre
    • Die Werte mithilfe des Pfeiloperators den Strukturmitgliedern zuweist
    • Einen Bonus basierend auf den Dienstjahren berechnet: Wenn die Dienstjahre >= 5 sind, beträgt der Bonus 10 % des Gehalts, andernfalls 5 % des Gehalts
    • Den Bonus zum Gehalt addiert: empPtr->salary += bonus;
  3. Eine Funktion namens displayEmployee schreiben, die:
    • Einen Zeiger auf eine Employee-Struktur als Parameter entgegennimmt
    • Die Mitarbeiterinformationen in diesem exakten Format ausgibt:
      • Employee Details:
      • ID: [id]
      • Name: [name]
      • Department: [department]
      • Salary: [salary]
      • Years of Service: [yearsOfService]
  4. Eine Funktion namens promoteEmployee schreiben, die:
    • Einen Zeiger auf eine Employee-Struktur als Parameter entgegennimmt
    • Das Gehalt mithilfe des Pfeiloperators um 15 % erhöht
    • Die Dienstjahre um 1 erhöht
    • Employee promoted successfully! ausgibt
  5. In der main-Funktion:
    • Einen Zeiger auf eine Employee-Struktur namens empPtr deklarieren
    • malloc() verwenden, um dynamisch Speicher für eine Employee-Struktur zuzuweisen
    • Überprüfen, ob die Speicherzuweisung erfolgreich war:
      • Wenn empPtr NULL ist, Memory allocation failed ausgeben und das Programm beenden
      • Bei Erfolg Memory allocated successfully ausgeben
    • fillEmployeeData aufrufen, um die Mitarbeiterdaten auszufüllen
    • Initial employee data: ausgeben
    • displayEmployee aufrufen, um die anfänglichen Mitarbeiterinformationen anzuzeigen
    • promoteEmployee aufrufen, um den Mitarbeiter zu befördern
    • After promotion: ausgeben
    • displayEmployee erneut aufrufen, um die aktualisierten Informationen anzuzeigen
    • Den dynamisch zugewiesenen Speicher mit free(empPtr) freigeben
    • Memory freed successfully ausgeben

Diese Aufgabe verbindet alle wichtigen Konzepte aus dem Kapitel: das Definieren von Strukturen, die dynamische Speicherzuweisung mit malloc(), die Überprüfung auf fehlgeschlagene Speicherzuweisung, das Übergeben von Strukturzeigern an Funktionen, die Verwendung des Pfeiloperators zum Zugreifen auf und Ändern von Strukturmitgliedern sowie die ordnungsgemäße Speicherbereinigung mit free(). Die Funktionen demonstrieren, wie Zeiger eine direkte Änderung der Daten der ursprünglichen Struktur ermöglichen.

Probier es selbst

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

// TODO: Definieren Sie hier die Employee-Struktur

// TODO: Implementieren Sie hier die Funktion fillEmployeeData

// TODO: Implementieren Sie hier die Funktion displayEmployee

// TODO: Implementieren Sie hier die Funktion promoteEmployee

int main() {
    // TODO: Deklarieren Sie empPtr und weisen Sie Speicher zu
    
    // TODO: Überprüfen Sie, ob die Speicherzuweisung erfolgreich war
    
    // TODO: Mitarbeiterdaten ausfüllen, Anfangsdaten anzeigen, befördern und nach der Beförderung anzeigen
    
    // TODO: Speicher freigeben und Erfolgsmeldung ausgeben
    
    return 0;
}

Alle Lektionen in Logik & Ablauf

Übe selbstständig: Online-C-Compiler