Повторение: массив структур
Часть раздела Logic & Flow путешествия по C на Coddy — урок 62 из 63.
Задание
ЛегкоСоздайте программу на языке C, которая управляет системой инвентаризации товаров с использованием массива структур. Ваша программа должна:
- Определить
structс именемProductсо следующими полями:- Символьный массив
nameразмером 30 - Число с плавающей точкой
price - Целое число
stock
- Символьный массив
- Написать функцию с именем
findMostExpensive, которая:- Принимает массив
struct Productи целое числоsizeв качестве параметров - Возвращает целое число, представляющее индекс товара с самой высокой ценой
- Использует цикл для итерации по всем товарам и сравнения их цен
- Возвращает индекс первого найденного товара с максимальной ценой
- Принимает массив
- Написать функцию с именем
calculateTotalValue, которая:- Принимает массив
struct Productи целое числоsizeв качестве параметров - Возвращает число с плавающей точкой, представляющее общую стоимость инвентаря
- Рассчитывает общую стоимость путем суммирования (цена × количество) для каждого товара
- Принимает массив
- Написать функцию с именем
findLowStock, которая:- Принимает массив
struct Product, целое числоsizeи целое числоthresholdв качестве параметров - Возвращает целое число, представляющее количество товаров, запас которых ниже порогового значения
- Использует цикл для подсчета товаров, у которых stock меньше значения threshold
- Принимает массив
- В функции main:
- Создать массив из 3
struct Productс именемinventory - Считать входные данные для каждого товара в следующем порядке: name, price, stock
- Заполнить массив входными данными
- Вывести информацию о каждом товаре в точном формате:
Product [index]: [name] - Price: [price], Stock: [stock] - Вызвать функцию
findMostExpensiveи вывести результат в точном формате:Most expensive product: [name] - Вызвать функцию
calculateTotalValueи вывести результат ровно с 2 знаками после запятой в точном формате:Total inventory value: [total_value] - Считать целое число, представляющее порог низкого запаса
- Вызвать функцию
findLowStockс этим порогом и вывести результат в точном формате:Products with low stock: [count] - Проверить, превышает ли запас самого дорогого товара значение 10:
- Если да: вывести
Most expensive product is well stocked - Если нет: вывести
Most expensive product needs restocking
- Если да: вывести
- Создать массив из 3
Эта задача проверяет ваше умение работать с массивами структур, реализовывать функции, обрабатывающие массивы структур, и выполнять различные вычисления и сравнения структурированных данных. Вы попрактикуетесь в индексации массивов со структурами, проектировании функций для обработки данных и объединении нескольких операций для анализа информации об инвентаре.
Попробуйте сами
#include <stdio.h>
#include <string.h>
// TODO: Определите структуру Product здесь
// TODO: Реализуйте функцию findMostExpensive здесь
// TODO: Реализуйте функцию calculateTotalValue здесь
// TODO: Реализуйте функцию findLowStock здесь
int main() {
// Создайте массив из 3 продуктов
struct Product inventory[3];
// Считайте входные данные для каждого продукта
for (int i = 0; i < 3; i++) {
scanf("%s", inventory[i].name);
scanf("%f", &inventory[i].price);
scanf("%d", &inventory[i].stock);
}
// TODO: Выведите информацию о каждом продукте
// TODO: Найдите и выведите самый дорогой продукт
// TODO: Рассчитайте и выведите общую стоимость запасов
// Считайте порог низкого запаса
int threshold;
scanf("%d", &threshold);
// TODO: Найдите и выведите продукты с низким запасом
// TODO: Проверьте, достаточно ли запасов самого дорогого продукта
return 0;
}Все уроки раздела Logic & Flow
1Основы указателей
Что такое указатель?Объявление указателейОператор взятия адреса (&)Оператор разыменования (*)Указатели NULLИтоги: Основы указателей4Проект: Простая текстовая утилита
Обзор проектаПодсчет символов2Указатели и массивы
Имена массивов как указателиЭлементы массива — указателиАрифметика указателейСравнение указателейИтоги: Обход массива через указатели5Указатели и функции
Передача по значениюПередача указателей в функцииИзменение переменных через указателиКлассический пример: SwapПередача массивов в функцииИтоги: указатели как аргументы функций8Структуры и указатели
Указатели на структурыОператор «стрелка» (->)Передача структур по значениюПередача указателей на структурыДинамическое выделение памяти для структурИтоги: Изменение структур через указатели11Итоговые задачи на повторение
Повторение: динамическая конкатенация строкПовторение: массив структурПовторение: счетчик частоты слов3Символьные массивы и строки
Строки как массивы charНуль-терминаторВвод строк с помощью scanfИспользование strlen()Использование strcpy()Использование strcat()Использование strcmp()Итоги: основные строковые функции