Enums deklarieren und verwenden
Teil des Abschnitts Logik & Ablauf der C-Journey von Coddy. Lektion 56 von 63.
Nachdem du ein enum definiert hast, kannst du Variablen dieses Enum-Typs erstellen und ihnen aussagekräftige Werte zuweisen. Hier kommen Enumerationen wirklich zur Geltung – anstatt mit verwirrenden Zahlen zu arbeiten, verwendest du beschreibende Namen.
Um eine Variable eines Aufzählungstyps zu deklarieren, verwendest du dieselbe Syntax wie bei der Deklaration jeder anderen Variable:
enum DayOfWeek today;
enum DayOfWeek weekend_day;Du kannst diesen Variablen dann mithilfe der benannten Konstanten aus deinem Enum Werte zuweisen:
today = WEDNESDAY;
weekend_day = SATURDAY;Vergleiche dies mit der Verwendung roher Zahlen: today = 2; und weekend_day = 5;. Die Enum-Version zeigt dir sofort, mit welchem Tag du arbeitest, während du dir bei den Zahlen merken musst, wofür jeder Wert steht. Dadurch wird dein Code deutlich lesbarer und weniger fehleranfällig.
Aufgabe
EinfachErstelle ein C-Programm, das das Deklarieren und Verwenden von Enum-Variablen für ein einfaches Aufgabenverwaltungssystem demonstriert. Dein Programm sollte:
- Ein
enumnamensTaskStatusmit den folgenden Konstanten in genau dieser Reihenfolge definieren:PENDINGIN_PROGRESSCOMPLETEDCANCELLED
- In der Hauptfunktion:
- Drei Variablen vom Typ
enum TaskStatusmit den Namentask1,task2undtask3deklarieren - Drei Ganzzahlen aus der Eingabe lesen, die den Status jeder Aufgabe darstellen (0, 1, 2 oder 3)
- Jedem Aufgabenvariable basierend auf der Eingabe den entsprechenden Enum-Wert zuweisen:
- Wenn die Eingabe 0 ist,
PENDINGzuweisen - Wenn die Eingabe 1 ist,
IN_PROGRESSzuweisen - Wenn die Eingabe 2 ist,
COMPLETEDzuweisen - Wenn die Eingabe 3 ist,
CANCELLEDzuweisen
- Wenn die Eingabe 0 ist,
- Den Status jeder Aufgabe mithilfe der Enum-Werte in genau diesem Format ausgeben:
Task 1 status: [numeric_value]Task 2 status: [numeric_value]Task 3 status: [numeric_value]
- Zählen und ausgeben, wie viele Aufgaben sich in jeder Statuskategorie befinden:
Pending tasks: [count]In progress tasks: [count]Completed tasks: [count]Cancelled tasks: [count]
- Die Gesamtzahl der aktiven Aufgaben (Aufgaben, die entweder
PENDINGoderIN_PROGRESSsind) berechnen und in genau diesem Format ausgeben:Active tasks: [count]
- Drei Variablen vom Typ
Diese Herausforderung demonstriert, wie Enum-Variablen den Code durch die Verwendung aussagekräftiger Namen anstelle von rohen Zahlen besser lesbar machen. Du übst das Deklarieren von Enum-Variablen, das Zuweisen von Enum-Werten basierend auf der Eingabe, die Verwendung von Enum-Konstanten in Vergleichen und das Durchführen von Berechnungen mit Enum-Werten.
Probier es selbst
#include <stdio.h>
// TODO: Definieren Sie hier das TaskStatus-Enum
int main() {
// Eingabe für drei Aufgabenstatus lesen
int status1, status2, status3;
scanf("%d", &status1);
scanf("%d", &status2);
scanf("%d", &status3);
// TODO: Deklarieren Sie drei enum TaskStatus-Variablen (task1, task2, task3)
// TODO: Enum-Werte basierend auf der Eingabe zuweisen
// TODO: Aufgabenstatus ausgeben
// TODO: Aufgaben in jeder Kategorie zählen
// TODO: Anzahl der aktiven Aufgaben berechnen und ausgeben
return 0;
}Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Logik & Ablauf
1Zeiger-Grundlagen
Was ist ein Zeiger?Zeiger deklarierenDer Adressoperator (&)Der Dereferenzierungsoperator (*)NULL-ZeigerZusammenfassung: Zeiger-Grundlagen4Projekt: Einfaches Text-Tool
ProjektübersichtZeichen zählen7Strukturen (structs)
Was ist ein Struct?Deklarieren eines StructsErstellen von Struct-VariablenZugriff auf Struct-MemberInitialisieren von StructsZusammenfassung: Studentendaten-Struct10Enums und typedef
enum für benannte KonstantenEnums deklarieren und verwendenEnums in Switch-Anweisungentypedef für Typ-Aliase verwendentypedef mit StructsWiederholung: Übung zu typedef & Enums2Pointer und Arrays
Array-Namen als PointerArray-Elemente - PointerPointer-ArithmetikPointer vergleichenWiederholung: Array-Durchlauf mit Pointern5Zeiger und Funktionen
Wertübergabe (Pass-by-Value)Zeiger an Funktionen übergebenVariablen über Zeiger ändernEin klassisches Beispiel: SwapArrays an Funktionen übergebenZusammenfassung: Zeiger als Funktionsargumente8Structs und Zeiger
Zeiger auf StructsDer Pfeiloperator (->)Structs per Wert übergebenÜbergabe von Struct-ZeigernDynamische Allokation von StructsZusammenfassung: Struct ändern - Ptr11Finale Wiederholungsaufgaben
Wiederholung: Dynamische String-KonkatenationWiederholung: Array von StructsWiederholung: Wortfrequenz-Zähler3Character-Arrays und Strings
Strings als char-ArraysDer Null-TerminatorString-Eingabe mit scanfVerwendung von strlen()Verwendung von strcpy()Verwendung von strcat()Verwendung von strcmp()Zusammenfassung: Grundlegende String-FunktionenÜbe selbstständig: Online-C-Compiler