Menu
Coddy logo textTech

Repaso: Array de structs

Parte de la sección Logic & Flow del Journey de C de Coddy — lección 62 de 63.

challenge icon

Desafío

Fácil

Crea un programa en C que gestione un sistema de inventario de productos utilizando un arreglo de estructuras. Tu programa debe:

  1. Definir un struct llamado Product con los siguientes miembros:
    • Un arreglo de caracteres name con tamaño 30
    • Un float price
    • Un entero stock
  2. Escribir una función llamada findMostExpensive que:
    • Reciba un arreglo de struct Product y un entero size como parámetros
    • Devuelva un entero que represente el índice del producto con el precio más alto
    • Utilice un bucle para iterar a través de todos los productos y comparar sus precios
    • Devuelva el índice del primer producto encontrado con el precio máximo
  3. Escribir una función llamada calculateTotalValue que:
    • Reciba un arreglo de struct Product y un entero size como parámetros
    • Devuelva un float que represente el valor total del inventario
    • Calcule el valor total sumando (precio × stock) para cada producto
  4. Escribir una función llamada findLowStock que:
    • Reciba un arreglo de struct Product, un entero size, y un entero threshold como parámetros
    • Devuelva un entero que represente el recuento de productos con stock por debajo del umbral
    • Utilice un bucle para contar los productos donde el stock es menor que el valor del umbral
  5. En la función main:
    • Crear un arreglo de 3 struct Product llamado inventory
    • Leer la entrada para cada producto en este orden: name, price, stock
    • Poblar el arreglo con los datos de entrada
    • Imprimir la información de cada producto en este formato exacto: Product [index]: [name] - Price: [price], Stock: [stock]
    • Llamar a la función findMostExpensive e imprimir el resultado en este formato exacto: Most expensive product: [name]
    • Llamar a la función calculateTotalValue e imprimir el resultado con exactamente 2 decimales en este formato exacto: Total inventory value: [total_value]
    • Leer un entero que represente el umbral de stock bajo
    • Llamar a la función findLowStock con el umbral e imprimir el resultado en este formato exacto: Products with low stock: [count]
    • Comprobar si el producto más caro tiene un stock superior a 10:
      • Si es así: imprimir Most expensive product is well stocked
      • Si no: imprimir Most expensive product needs restocking

Este desafío pone a prueba tu capacidad para trabajar con arreglos de estructuras, implementar funciones que procesen arreglos de estructuras y realizar diversos cálculos y comparaciones sobre datos estructurados. Practicarás la indexación de arreglos con estructuras, el diseño de funciones para el procesamiento de datos y la combinación de múltiples operaciones para analizar la información del inventario.

Pruébalo tú mismo

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

// TODO: Definir la estructura Product aquí

// TODO: Implementar la función findMostExpensive aquí

// TODO: Implementar la función calculateTotalValue aquí

// TODO: Implementar la función findLowStock aquí

int main() {
    // Crear un arreglo de 3 productos
    struct Product inventory[3];
    
    // Leer la entrada para cada producto
    for (int i = 0; i < 3; i++) {
        scanf("%s", inventory[i].name);
        scanf("%f", &inventory[i].price);
        scanf("%d", &inventory[i].stock);
    }
    
    // TODO: Imprimir la información de cada producto
    
    // TODO: Encontrar e imprimir el producto más caro
    
    // TODO: Calcular e imprimir el valor total del inventario
    
    // Leer el umbral de stock bajo
    int threshold;
    scanf("%d", &threshold);
    
    // TODO: Encontrar e imprimir productos con stock bajo
    
    // TODO: Verificar si el producto más caro tiene suficiente stock
    
    return 0;
}

Todas las lecciones de Logic & Flow