Menu
Coddy logo textTech

Итоги: практика по typedef и enum

Часть раздела Логика и управление потоком путешествия по C на Coddy. Урок 60 из 63.

challenge icon

Задание

Легко

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

  1. Определить enum с именем ShapeType со следующими константами именно в таком порядке:
    • CIRCLE
    • RECTANGLE
    • TRIANGLE
  2. Использовать typedef для создания псевдонима типа с именем Shape для enum ShapeType
  3. Написать функцию с именем calculateArea, которая:
    • Принимает параметр типа Shape с именем shape
    • Принимает два параметра типа float с именами dimension1 и dimension2
    • Возвращает float, представляющий вычисленную площадь
    • Использует оператор switch для вычисления площади в зависимости от типа фигуры:
      • Для CIRCLE: area = 3.14159 * dimension1 * dimension1 (dimension1 — это радиус)
      • Для RECTANGLE: area = dimension1 * dimension2 (длина × ширина)
      • Для TRIANGLE: area = 0.5 * dimension1 * dimension2 (0.5 × основание × высота)
  4. Написать функцию с именем printShapeInfo, которая:
    • Принимает параметр типа Shape с именем shape
    • Ничего не возвращает (void)
    • Использует оператор switch для вывода информации о фигуре:
      • Для CIRCLE: выводит Shape: Circle
      • Для RECTANGLE: выводит Shape: Rectangle
      • Для TRIANGLE: выводит Shape: Triangle
  5. В функции main:
    • Объявить переменную типа Shape с именем selectedShape
    • Объявить две переменные типа float с именами dim1 и dim2
    • Считать три значения из входных данных: целое число, представляющее выбор фигуры (0, 1 или 2), и два числа с плавающей точкой для размеров
    • Присвоить соответствующее значение enum переменной selectedShape на основе ввода
    • Присвоить значения размеров переменным dim1 и dim2
    • Вызвать функцию printShapeInfo с аргументом selectedShape
    • Вывести размеры в точном формате: Dimensions: [dim1] [dim2]
    • Вычислить площадь, вызвав функцию calculateArea
    • Вывести вычисленную площадь ровно с 2 знаками после запятой в точном формате: Area: [area]
    • Определить и вывести категорию фигуры на основе вычисленной площади:
      • Если площадь меньше 10.0: вывести Category: Small
      • Если площадь от 10.0 до 50.0 (включительно): вывести Category: Medium
      • Если площадь больше 50.0: вывести Category: Large

Эта задача демонстрирует мощное сочетание совместной работы enum и typedef. typedef создает чистое, читаемое имя типа Shape вместо того, чтобы постоянно писать enum ShapeType. Константы enum делают операторы switch самодокументируемыми, четко показывая, что представляет собой каждый случай. Вы попрактикуетесь в определении обоих понятий, использовании их в параметрах функций и реализации логики, зависящей от значений перечисления.

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

#include <stdio.h>

// TODO: Определите здесь ваш enum ShapeType и typedef

// TODO: Реализуйте здесь функцию calculateArea

// TODO: Реализуйте здесь функцию printShapeInfo

int main() {
    // Чтение входных данных
    int shapeChoice;
    float dim1, dim2;
    scanf("%d", &shapeChoice);
    scanf("%f", &dim1);
    scanf("%f", &dim2);
    
    // TODO: Напишите ваш код ниже
    // Объявите переменную selectedShape и присвойте значение на основе shapeChoice
    // Вызовите функцию printShapeInfo
    // Выведите размеры
    // Рассчитайте и выведите площадь
    // Определите и выведите категорию
    
    return 0;
}

Все уроки раздела Логика и управление потоком

Потренируйтесь самостоятельно: Онлайн-компилятор C