Menu
Coddy logo textTech

Объявление и использование enum

Часть раздела Logic & Flow путешествия по C на Coddy — урок 56 из 63.

Теперь, когда вы определили enum, вы можете создавать переменные этого типа перечисления и присваивать им осмысленные значения. Именно здесь перечисления по-настоящему раскрываются — вместо того чтобы работать с запутанными числами, вы используете описательные имена.

Для объявления переменной перечисляемого типа (enum) используется тот же синтаксис, что и для объявления любой другой переменной:

enum DayOfWeek today;
enum DayOfWeek weekend_day;

Затем вы можете присвоить значения этим переменным, используя именованные константы из вашего перечисления:

today = WEDNESDAY;
weekend_day = SATURDAY;

Сравните это с использованием обычных чисел: today = 2; и weekend_day = 5;. Версия с перечислением (enum) сразу сообщает вам, с каким днем вы работаете, в то время как числа требуют запоминания того, что представляет каждое значение. Это делает ваш код гораздо более читаемым и менее подверженным ошибкам.

challenge icon

Задание

Легко

Создайте программу на языке C, которая демонстрирует объявление и использование переменных enum для простой системы управления задачами. Ваша программа должна:

  1. Определить enum с именем TaskStatus со следующими константами в указанном порядке:
    • PENDING
    • IN_PROGRESS
    • COMPLETED
    • CANCELLED
  2. В функции main:
    • Объявить три переменные типа enum TaskStatus с именами task1, task2 и task3
    • Считать три целых числа из входных данных, представляющих статус каждой задачи (0, 1, 2 или 3)
    • Присвоить соответствующие значения enum каждой переменной задачи на основе входных данных:
      • Если входное значение 0, присвоить PENDING
      • Если входное значение 1, присвоить IN_PROGRESS
      • Если входное значение 2, присвоить COMPLETED
      • Если входное значение 3, присвоить CANCELLED
    • Вывести статус каждой задачи, используя значения enum в этом точном формате:
      • Task 1 status: [numeric_value]
      • Task 2 status: [numeric_value]
      • Task 3 status: [numeric_value]
    • Подсчитать и вывести количество задач в каждой категории статуса:
      • Pending tasks: [count]
      • In progress tasks: [count]
      • Completed tasks: [count]
      • Cancelled tasks: [count]
    • Рассчитать и вывести общее количество активных задач (задач, которые находятся в статусе PENDING или IN_PROGRESS) в этом точном формате: Active tasks: [count]

Эта задача демонстрирует, как переменные enum делают код более читаемым, используя осмысленные имена вместо необработанных чисел. Вы попрактикуетесь в объявлении переменных enum, присвоении значений enum на основе входных данных, использовании констант enum в сравнениях и выполнении вычислений со значениями enum.

Шпаргалка

Для объявления переменных перечисляемого типа (enum) используйте тот же синтаксис, что и для объявления любой другой переменной:

enum DayOfWeek today;
enum DayOfWeek weekend_day;

Присваивайте значения переменным enum, используя именованные константы из вашего перечисления:

today = WEDNESDAY;
weekend_day = SATURDAY;

Использование имен enum вместо обычных чисел делает код более читаемым и менее подверженным ошибкам. Сравните today = WEDNESDAY; с today = 2; — версия с enum сразу показывает, с каким днем вы работаете.

Попробуйте сами

#include <stdio.h>

// TODO: Определите здесь перечисление TaskStatus

int main() {
    // Считайте ввод для трех статусов задач
    int status1, status2, status3;
    scanf("%d", &status1);
    scanf("%d", &status2);
    scanf("%d", &status3);
    
    // TODO: Объявите три переменные перечисления TaskStatus (task1, task2, task3)
    
    // TODO: Присвойте значения перечисления на основе ввода
    
    // TODO: Выведите статусы задач
    
    // TODO: Подсчитайте количество задач в каждой категории
    
    // TODO: Рассчитайте и выведите количество активных задач
    
    return 0;
}
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Logic & Flow