Repaso: Array de structs
Parte de la sección Logic & Flow del Journey de C de Coddy — lección 62 de 63.
Desafío
FácilCrea un programa en C que gestione un sistema de inventario de productos utilizando un arreglo de estructuras. Tu programa debe:
- Definir un
structllamadoProductcon los siguientes miembros:- Un arreglo de caracteres
namecon tamaño 30 - Un float
price - Un entero
stock
- Un arreglo de caracteres
- Escribir una función llamada
findMostExpensiveque:- Reciba un arreglo de
struct Producty un enterosizecomo 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
- Reciba un arreglo de
- Escribir una función llamada
calculateTotalValueque:- Reciba un arreglo de
struct Producty un enterosizecomo parámetros - Devuelva un float que represente el valor total del inventario
- Calcule el valor total sumando (precio × stock) para cada producto
- Reciba un arreglo de
- Escribir una función llamada
findLowStockque:- Reciba un arreglo de
struct Product, un enterosize, y un enterothresholdcomo 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
- Reciba un arreglo de
- En la función main:
- Crear un arreglo de 3
struct Productllamadoinventory - 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
findMostExpensivee imprimir el resultado en este formato exacto:Most expensive product: [name] - Llamar a la función
calculateTotalValuee 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
findLowStockcon 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
- Si es así: imprimir
- Crear un arreglo de 3
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
1Fundamentos de Punteros
¿Qué es un puntero?Declaración de punterosEl operador de dirección (&)El operador de desreferencia (*)Punteros NULLResumen: Conceptos básicos de punteros4Proyecto: Utilidad de texto simple
Descripción general del proyectoContar caracteres2Punteros y Arrays
Nombres de Arrays como PunterosElementos de un Array - PunterosAritmética de PunterosComparación de PunterosResumen: Recorrido de Arrays con Punteros5Punteros y funciones
Paso por valorPasar punteros a funcionesModificar variables mediante punterosUn ejemplo clásico: Intercambio (Swap)Pasar arrays a funcionesResumen: Argumentos de punteros a funciones8Estructuras y Punteros
Punteros a estructurasEl operador flecha (->)Pasar estructuras por valorPasar punteros a estructurasAsignación dinámica de estructurasResumen: Modificar estructuras - Ptr11Desafíos de repaso final
Repaso: Concatenación dinámica de stringsRepaso: Array de structsRepaso: Contador de frecuencia de palabras3Arreglos de caracteres y cadenas
Cadenas como arreglos de charEl terminador nuloEntrada de cadenas con scanfUso de strlen()Uso de strcpy()Uso de strcat()Uso de strcmp()Resumen: Funciones básicas de cadenas