Menu
Coddy logo textTech

Repaso: Array de structs

Parte de la sección Lógica y Flujo 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 mediante un arreglo de estructuras. Tu programa debe:

  1. Definir una struct llamada Product con los siguientes miembros:
    • Un arreglo de caracteres name de tamaño 30
    • Un número de punto flotante price
    • Un entero stock
  2. Escribir una función llamada findMostExpensive que:
    • Reciba como parámetros un arreglo de struct Product y un entero size
    • Devuelva un entero que represente el índice del producto con el precio más alto
    • Utilice un bucle para recorrer 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 como parámetros un arreglo de struct Product y un entero size
    • Devuelva un número de punto flotante que represente el valor total del inventario
    • Calcule el valor total sumando (precio × stock) de cada producto
  4. Escribir una función llamada findLowStock que:
    • Reciba como parámetros un arreglo de struct Product, un entero size y un entero threshold
    • Devuelva un entero que represente la cantidad de productos cuyo stock esté por debajo del umbral
    • Utilice un bucle para contar los productos cuyo stock sea menor que el valor del umbral
  5. En la función principal:
    • Crear un arreglo de 3 struct Product llamado inventory
    • Leer los datos de entrada de cada producto en este orden: nombre, precio, stock
    • Rellenar el arreglo con los datos de entrada
    • Imprimir la información de cada producto con este formato exacto: Product [index]: [name] - Price: [price], Stock: [stock]
    • Llamar a la función findMostExpensive e imprimir el resultado con este formato exacto: Most expensive product: [name]
    • Llamar a la función calculateTotalValue e imprimir el resultado con exactamente 2 posiciones decimales y con 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 con 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 varias 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 Lógica y Flujo

Practica por tu cuenta: Compilador de C online