Menu
Coddy logo textTech

Ripasso: array di struct

Fa parte della sezione Logica e flusso del percorso C di Coddy. Lezione 62 di 63.

challenge icon

Sfida

Facile

Crea un programma in C che gestisca un sistema di inventario dei prodotti usando un array di struct. Il tuo programma dovrebbe:

  1. Definire una struct chiamata Product con i seguenti membri:
    • Un array di caratteri name di dimensione 30
    • Un float price
    • Un intero stock
  2. Scrivere una funzione chiamata findMostExpensive che:
    • Accetti come parametri un array di struct Product e un intero size
    • Restituisca un intero che rappresenti l'indice del prodotto con il prezzo più alto
    • Usi un ciclo per iterare su tutti i prodotti e confrontarne i prezzi
    • Restituisca l'indice del primo prodotto trovato con il prezzo massimo
  3. Scrivere una funzione chiamata calculateTotalValue che:
    • Accetti come parametri un array di struct Product e un intero size
    • Restituisca un float che rappresenti il valore totale dell'inventario
    • Calcoli il valore totale sommando (prezzo × scorte) per ciascun prodotto
  4. Scrivere una funzione chiamata findLowStock che:
    • Accetti come parametri un array di struct Product, un intero size e un intero threshold
    • Restituisca un intero che rappresenti il numero di prodotti con scorte inferiori alla soglia
    • Usi un ciclo per contare i prodotti le cui scorte sono inferiori al valore della soglia
  5. Nella funzione main:
    • Crei un array di 3 struct Product chiamato inventory
    • Legga i dati di input per ciascun prodotto in quest'ordine: nome, prezzo, scorte
    • Popoli l'array con i dati di input
    • Stampi le informazioni di ciascun prodotto in questo formato esatto: Product [index]: [name] - Price: [price], Stock: [stock]
    • Chiami la funzione findMostExpensive e stampi il risultato in questo formato esatto: Most expensive product: [name]
    • Chiami la funzione calculateTotalValue e stampi il risultato con esattamente 2 cifre decimali in questo formato esatto: Total inventory value: [total_value]
    • Legga un intero che rappresenta la soglia delle scorte basse
    • Chiami la funzione findLowStock con la soglia e stampi il risultato in questo formato esatto: Products with low stock: [count]
    • Verifichi se le scorte del prodotto più costoso sono superiori a 10:
      • Se sì: stampi Most expensive product is well stocked
      • Se no: stampi Most expensive product needs restocking

Questa sfida mette alla prova la tua capacità di lavorare con array di struct, implementare funzioni che elaborano array di struct ed eseguire vari calcoli e confronti su dati strutturati. Ti eserciterai nell'indicizzazione degli array con struct, nella progettazione di funzioni per l'elaborazione dei dati e nella combinazione di più operazioni per analizzare le informazioni dell'inventario.

Provalo tu

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

// TODO: Definisci qui la struct Product

// TODO: Implementa qui la funzione findMostExpensive

// TODO: Implementa qui la funzione calculateTotalValue

// TODO: Implementa qui la funzione findLowStock

int main() {
    // Crea un array di 3 prodotti
    struct Product inventory[3];
    
    // Leggi i dati di input per ogni prodotto
    for (int i = 0; i < 3; i++) {
        scanf("%s", inventory[i].name);
        scanf("%f", &inventory[i].price);
        scanf("%d", &inventory[i].stock);
    }
    
    // TODO: Stampa le informazioni di ogni prodotto
    
    // TODO: Trova e stampa il prodotto più costoso
    
    // TODO: Calcola e stampa il valore totale dell'inventario
    
    // Leggi la soglia per le scorte basse
    int threshold;
    scanf("%d", &threshold);
    
    // TODO: Trova e stampa i prodotti con scorte basse
    
    // TODO: Verifica se il prodotto più costoso ha scorte sufficienti
    
    return 0;
}

Tutte le lezioni di Logica e flusso

Esercitati da solo: Compilatore C online