Итоги: практика по typedef и enum
Часть раздела Логика и управление потоком путешествия по C на Coddy. Урок 60 из 63.
Задание
ЛегкоСоздайте программу на языке C, которая объединяет enum и typedef для создания простого калькулятора геометрических фигур. Ваша программа должна:
- Определить
enumс именемShapeTypeсо следующими константами именно в таком порядке:CIRCLERECTANGLETRIANGLE
- Использовать
typedefдля создания псевдонима типа с именемShapeдляenum ShapeType - Написать функцию с именем
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 × основание × высота)
- Для
- Принимает параметр типа
- Написать функцию с именем
printShapeInfo, которая:- Принимает параметр типа
Shapeс именемshape - Ничего не возвращает (void)
- Использует оператор
switchдля вывода информации о фигуре:- Для
CIRCLE: выводитShape: Circle - Для
RECTANGLE: выводитShape: Rectangle - Для
TRIANGLE: выводитShape: Triangle
- Для
- Принимает параметр типа
- В функции 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
- Если площадь меньше 10.0: вывести
- Объявить переменную типа
Эта задача демонстрирует мощное сочетание совместной работы 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;
}Все уроки раздела Логика и управление потоком
1Основы указателей
Что такое указатель?Объявление указателейОператор взятия адреса (&)Оператор разыменования (*)Указатели NULLИтоги: Основы указателей4Проект: Простая текстовая утилита
Обзор проектаПодсчет символов7Структуры (structs)
Что такое структура?Объявление структурыСоздание переменных структурДоступ к членам структурыИнициализация структурПовторение: структура данных Student10Перечисления и typedef
enum для именованных константОбъявление и использование enumEnum в операторах switchИспользование typedef для псевдонимов типовtypedef со структурамиИтоги: практика по typedef и enum2Указатели и массивы
Имена массивов как указателиЭлементы массива — указателиАрифметика указателейСравнение указателейИтоги: Обход массива через указатели5Указатели и функции
Передача по значениюПередача указателей в функцииИзменение переменных через указателиКлассический пример: SwapПередача массивов в функцииИтоги: указатели как аргументы функций8Структуры и указатели
Указатели на структурыОператор «стрелка» (->)Передача структур по значениюПередача указателей на структурыДинамическое выделение памяти для структурИтоги: Изменение структур через указатели11Итоговые задачи на повторение
Повторение: динамическая конкатенация строкПовторение: массив структурПовторение: счетчик частоты слов3Символьные массивы и строки
Строки как массивы charНуль-терминаторВвод строк с помощью scanfИспользование strlen()Использование strcpy()Использование strcat()Использование strcmp()Итоги: основные строковые функцииПотренируйтесь самостоятельно: Онлайн-компилятор C