Deklarowanie i używanie enum
Część sekcji Logika i sterowanie przepływem ścieżki C w Coddy. Lekcja 56 z 63.
Teraz, gdy zdefiniowałeś enum, możesz tworzyć zmienne tego typu wyliczeniowego i przypisywać im znaczące wartości. Właśnie tutaj enumy pokazują swoją prawdziwą moc — zamiast używać mylących liczb, korzystasz z opisowych nazw.
Aby zadeklarować zmienną typu wyliczeniowego, użyj tej samej składni co przy deklarowaniu dowolnej innej zmiennej:
enum DayOfWeek today;
enum DayOfWeek weekend_day;Możesz następnie przypisać wartości tym zmiennym, używając nazwanych stałych z wyliczenia:
today = WEDNESDAY;
weekend_day = SATURDAY;Porównaj to z używaniem surowych liczb: today = 2; i weekend_day = 5;. Wersja z wyliczeniem od razu informuje, z jakim dniem pracujesz, podczas gdy liczby wymagają pamiętania, co reprezentuje każda wartość. Dzięki temu Twój kod jest znacznie bardziej czytelny i mniej podatny na błędy.
Wyzwanie
ŁatwyUtwórz program w języku C, który demonstruje deklarowanie i używanie zmiennych typu enum w prostym systemie zarządzania zadaniami. Twój program powinien:
- Zdefiniować typ
enumo nazwieTaskStatusz następującymi stałymi w tej dokładnej kolejności:PENDINGIN_PROGRESSCOMPLETEDCANCELLED
- W funkcji main:
- Zadeklarować trzy zmienne typu
enum TaskStatuso nazwachtask1,task2itask3 - Wczytać z wejścia trzy liczby całkowite reprezentujące status każdego zadania (0, 1, 2 lub 3)
- Przypisać odpowiednie wartości enum do każdej zmiennej zadania na podstawie danych wejściowych:
- Jeśli dane wejściowe to 0, przypisać
PENDING - Jeśli dane wejściowe to 1, przypisać
IN_PROGRESS - Jeśli dane wejściowe to 2, przypisać
COMPLETED - Jeśli dane wejściowe to 3, przypisać
CANCELLED
- Jeśli dane wejściowe to 0, przypisać
- Wypisać status każdego zadania, używając wartości enum w dokładnie takim formacie:
Task 1 status: [numeric_value]Task 2 status: [numeric_value]Task 3 status: [numeric_value]
- Policzyć i wypisać liczbę zadań w każdej kategorii statusu:
Pending tasks: [count]In progress tasks: [count]Completed tasks: [count]Cancelled tasks: [count]
- Obliczyć i wypisać łączną liczbę aktywnych zadań (zadań, których status to
PENDINGlubIN_PROGRESS) w dokładnie takim formacie:Active tasks: [count]
- Zadeklarować trzy zmienne typu
To wyzwanie pokazuje, jak zmienne typu enum zwiększają czytelność kodu, zastępując surowe liczby znaczącymi nazwami. Przećwiczysz deklarowanie zmiennych enum, przypisywanie wartości enum na podstawie danych wejściowych, używanie stałych enum w porównaniach oraz wykonywanie obliczeń z użyciem wartości enum.
Spróbuj swoich sił
#include <stdio.h>
// TODO: Zdefiniuj tutaj enum TaskStatus
int main() {
// Wczytaj dane wejściowe dla trzech statusów zadań
int status1, status2, status3;
scanf("%d", &status1);
scanf("%d", &status2);
scanf("%d", &status3);
// TODO: Zadeklaruj trzy zmienne typu enum TaskStatus (task1, task2, task3)
// TODO: Przypisz wartości enum na podstawie danych wejściowych
// TODO: Wyświetl statusy zadań
// TODO: Policz zadania w każdej kategorii
// TODO: Oblicz i wyświetl liczbę aktywnych zadań
return 0;
}Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Logika i sterowanie przepływem
1Podstawy wskaźników
Czym jest wskaźnik?Deklarowanie wskaźnikówOperator pobrania adresu (&)Operator dereferencji (*)Wskaźniki NULLPodsumowanie: podstawy wskaźników4Projekt: Proste narzędzie tekstowe
Przegląd projektuLiczenie znaków7Struktury (struct)
Czym jest struktura?Deklarowanie strukturyTworzenie zmiennych strukturyDostęp do składowych strukturyInicjalizacja strukturPodsumowanie: struktura danych studenta10Enum i typedef
enum dla nazwanych stałychDeklarowanie i używanie enumEnum w instrukcjach switchUżywanie typedef do tworzenia aliasów typówtypedef ze strukturamiPowtórka: ćwiczenia z typedef i enum2Wskaźniki i tablice
Nazwy tablic jako wskaźnikiElementy tablic — wskaźnikiArytmetyka wskaźnikówPorównywanie wskaźnikówPodsumowanie: przechodzenie po tablicy za pomocą wskaźników5Wskaźniki i funkcje
Przekazywanie przez wartośćPrzekazywanie wskaźników do funkcjiModyfikowanie zmiennych za pomocą wskaźnikówKlasyczny przykład: zamianaPrzekazywanie tablic do funkcjiPowtórka: argumenty wskaźnikowe funkcji8Struktury i wskaźniki
Wskaźniki do strukturOperator strzałki (->)Przekazywanie struktur przez wartośćPrzekazywanie wskaźników do strukturDynamiczna alokacja strukturPodsumowanie: modyfikowanie struktury — wskaźnik11Końcowe zadania powtórkowe
Powtórka: dynamiczne łączenie ciągów znakówPowtórka: tablica strukturPowtórka: licznik częstotliwości słów3Tablice znaków i ciągi znaków
Ciągi znaków jako tablice charZnak końca ciąguWczytywanie ciągu za pomocą scanfUżywanie strlen()Używanie strcpy()Używanie strcat()Używanie strcmp()Podsumowanie: podstawowe funkcje do obsługi ciągów znakówPoćwicz samodzielnie: Kompilator C online