Menu
Coddy logo textTech

typedef со структурами

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

Одним из наиболее практичных применений typedef является создание псевдонимов для типов struct. Это избавляет от необходимости повторно писать ключевое слово struct каждый раз, когда вы объявляете переменную этого типа, делая ваш код чище и читабельнее.

Когда вы комбинируете typedef с определением структуры, вы можете создать новое имя типа, которое ссылается непосредственно на структуру. Вот синтаксис:

typedef struct Point {
    int x;
    int y;
} Point;

Теперь вместо того, чтобы писать struct Point p1; каждый раз, когда вам нужна переменная Point, вы можете просто написать Point p1;. Оба объявления выполняют абсолютно одно и то же, но версия с typedef более лаконична и легче читается.

Этот подход особенно ценен в крупных программах, где вы часто работаете с пользовательскими типами данных. Это делает ваш код более похожим на код на других языках программирования и уменьшает визуальный шум от многократного написания struct по всей программе.

challenge icon

Задание

Легко

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

  1. Определить struct с именем Book со следующими полями:
    • Целое число id
    • Символьный массив title размером 50
    • Число с плавающей точкой price
    • Целое число quantity
  2. Использовать typedef для создания псевдонима типа с именем Book для struct Book
  3. В функции main:
    • Объявить две переменные типа Book с именами book1 и book2
    • Считать входные данные для первой книги в следующем порядке: ID, название, цена, количество
    • Присвоить эти значения полям book1
    • Считать входные данные для второй книги в следующем порядке: ID, название, цена, количество
    • Присвоить эти значения полям book2
    • Вывести информацию о обеих книгах в точно таком формате:
      • Book 1: ID=[id], Title=[title], Price=[price], Quantity=[quantity]
      • Book 2: ID=[id], Title=[title], Price=[price], Quantity=[quantity]
    • Рассчитать и вывести общую стоимость запасов каждой книги (цена × количество) в точно таком формате:
      • Book 1 Total Value: [total_value]
      • Book 2 Total Value: [total_value]
    • Рассчитать и вывести общую стоимость запасов обеих книг в точно таком формате: Combined Inventory Value: [combined_value]
    • Определить и вывести, какая книга имеет более высокую индивидуальную стоимость:
      • Если общая стоимость book1 выше: вывести Book 1 has higher value
      • Если общая стоимость book2 выше: вывести Book 2 has higher value
      • Если обе стоимости равны: вывести Both books have equal value

Эта задача демонстрирует, как typedef со структурами избавляет от необходимости многократно писать struct Book в вашей программе. Вместо объявления переменных как struct Book book1;, вы можете просто написать Book book1;, что делает ваш код чище и читабельнее. Вы попрактикуетесь в объединении определения структуры с typedef, работе с полями структуры и выполнении вычислений с использованием данных структуры.

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

#include <stdio.h>
#include <string.h>

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

int main() {
    // TODO: Объявите ваши переменные Book здесь
    
    // Чтение входных данных для первой книги
    int id1, quantity1;
    char title1[50];
    float price1;
    
    scanf("%d", &id1);
    scanf("%s", title1);
    scanf("%f", &price1);
    scanf("%d", &quantity1);
    
    // TODO: Присвойте значения членам book1
    
    // Чтение входных данных для второй книги
    int id2, quantity2;
    char title2[50];
    float price2;
    
    scanf("%d", &id2);
    scanf("%s", title2);
    scanf("%f", &price2);
    scanf("%d", &quantity2);
    
    // TODO: Присвойте значения членам book2
    
    // TODO: Выведите информацию о книгах, рассчитайте значения и сравните
    
    return 0;
}
quiz iconПроверьте себя

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

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

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