Ripasso: array di struct
Fa parte della sezione Logica e flusso del percorso C di Coddy. Lezione 62 di 63.
Sfida
FacileCrea un programma in C che gestisca un sistema di inventario dei prodotti usando un array di struct. Il tuo programma dovrebbe:
- Definire una
structchiamataProductcon i seguenti membri:- Un array di caratteri
namedi dimensione 30 - Un float
price - Un intero
stock
- Un array di caratteri
- Scrivere una funzione chiamata
findMostExpensiveche:- Accetti come parametri un array di
struct Producte un interosize - 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
- Accetti come parametri un array di
- Scrivere una funzione chiamata
calculateTotalValueche:- Accetti come parametri un array di
struct Producte un interosize - Restituisca un float che rappresenti il valore totale dell'inventario
- Calcoli il valore totale sommando (prezzo × scorte) per ciascun prodotto
- Accetti come parametri un array di
- Scrivere una funzione chiamata
findLowStockche:- Accetti come parametri un array di
struct Product, un interosizee un interothreshold - 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
- Accetti come parametri un array di
- Nella funzione main:
- Crei un array di 3
struct Productchiamatoinventory - 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
findMostExpensivee stampi il risultato in questo formato esatto:Most expensive product: [name] - Chiami la funzione
calculateTotalValuee 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
findLowStockcon 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
- Se sì: stampi
- Crei un array di 3
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
1Fondamenti dei puntatori
Che cos’è un puntatore?Dichiarare i puntatoriL’operatore di indirizzo (&)L’operatore di dereferenziazione (*)Puntatori NULLRiepilogo: nozioni di base sui puntatori4Progetto: Utility di testo semplice
Panoramica del progettoConteggio dei caratteri2Puntatori e array
I nomi degli array come puntatoriElementi degli array e puntatoriAritmetica dei puntatoriConfrontare i puntatoriRiepilogo: attraversamento di un array con i puntatori5Puntatori e funzioni
Passaggio per valorePassare puntatori alle funzioniModificare le variabili tramite puntatoriUn esempio classico: scambiare valoriPassare array alle funzioniRiepilogo: argomenti puntatore nelle funzioni8Struct e puntatori
Puntatori a structL’operatore freccia (->)Passare le struct per valorePassare puntatori a structAllocazione dinamica delle structRiepilogo: modifica di una struct - puntatore11Sfide finali di ripasso
Ripasso: concatenazione dinamica di stringheRipasso: array di structRipasso: contatore di frequenza delle parole3Array di caratteri e stringhe
Stringhe come array di charIl terminatore nullInput di stringhe con scanfUso di strlen()Uso di strcpy()Uso di strcat()Uso di strcmp()Riepilogo: funzioni di base per le stringhe6Gestione della memoria
Memoria Stack vs. HeapAllocazione dinamica - malloc()Usare sizeof() per l'allocazioneVerificare il fallimento dell'allocazioneLiberare la memoria con free()Allocare con calloc()Riepilogo: array dinamico9Progetto: Inserimento semplice di un contatto
Progetto: Definire una struct ContattoFunzione per creare un contattoEsercitati da solo: Compilatore C online