Concetti Chiave
- La struttura dati memorizza informazioni su una collezione di foglie secche, inclusi specie botanica e quantità.
- È prevista una funzione di inserimento che gestisce sia l'aggiunta di nuove foglie che l'incremento della quantità di foglie già presenti.
- Se una foglia è già nell'elenco, il quantitativo viene incrementato di 1; altrimenti, viene aggiunta come nuovo elemento.
- La funzione insert Foglia() richiede l'implementazione di una funzione di ricerca per verificare la presenza della foglia nell'elenco.
- È importante gestire gli errori durante il processo di inserimento per garantire l'integrità dei dati.
Esercizio C - Funzioni e struct
Data le seguenti dichiarazioni che descrivono una struttura dati per memorizzare una collezione di foglie secche:
#define MAX_DATI 50
typedef char string [40];
typedef struct {
string specie; //specie botanica
int quant; } //quantità
tFoglia;
typedef struct {
tFoglia dati [MAX_DATI];
int numEff;
}tElencoFoglie;
Definizione delle funzioni
Con riferimento alla struttura di cui sopra, scrivete un pgm C che esegue l’inserimento di una foglia nell’elenco. Attenzione, però: non vogliamo che i doppioni occupino posti diversi, ma vogliamo comunque contare accuratamente tutte le foglie. I casi sono quindi due: se la foglia è già presente nell’elenco si deve incrementare il corrispondente quantitativo di 1 unità; se invece non è presente va inserita come nuovo elemento (e in questo caso il relativo quantitativo deve essere posto a 1).
Implementazione della funzione insert
La funzione insert Foglia() utilizza la funzione ricercaFoglia() anch’essa da codificare.
Gestire opportunamente le situazioni di errore.
Domande da interrogazione
- Come si gestisce l'inserimento di una foglia nell'elenco per evitare duplicati?
- Qual è la struttura dati utilizzata per memorizzare le foglie secche?
- Quali funzioni sono necessarie per gestire l'inserimento delle foglie?
Durante l'inserimento di una foglia, se la foglia è già presente nell'elenco, si incrementa il quantitativo di 1 unità; altrimenti, si inserisce come nuovo elemento con un quantitativo iniziale di 1.
La struttura dati utilizzata è `tElencoFoglie`, che contiene un array di `tFoglia` per memorizzare le foglie e un intero `numEff` per tenere traccia del numero effettivo di foglie nell'elenco.
Sono necessarie due funzioni: `insertFoglia()` per gestire l'inserimento e `ricercaFoglia()` per verificare se una foglia è già presente nell'elenco.