La pasticceria il dolcetto ha bisogno di un programma per catalogare tutti i dolci che produce e vende. Ha pensato a te!
Un programmatore abilissimo ha già realizzato qualcosa ma ha lasciato il programma a metà... :(
#include <iostream>
#include <fstream>
#include <string.h>
using namespace std;
struct Ingrediente {
char nome[50]; // Il nome dell'ingrediente
int quantita; // Quantità in grammi dell'ingrediente
};
struct Torta {
char nome[50];
Ingrediente ingredienti[10]; // Massimo 10 ingredienti
int numeroIngredienti; // Tiene traccia di quanti ingredienti ci sono, 0 all'inizio
Torta () {
numeroIngredienti = 0;
}
};
// Aggiunge una torta in coda
void inserisciTortaInCoda(Torta torte[], int &numeroTorte) {
fflush(stdin); // Completalo facendo inserire tutto all'utente
cin.get(torte[numeroTorte].nome, 49);
// inserisci anche gli altri dati chidendo tutto all'utente
torte[numeroTorte].numeroIngredienti = 2;
strcpy(torte[numeroTorte].ingredienti[0].nome, "Zucchero");
torte[numeroTorte].ingredienti[0].quantita = 300;
strcpy(torte[numeroTorte].ingredienti[1].nome, "Farina");
torte[numeroTorte].ingredienti[1].quantita = 400;
numeroTorte++;
}; // Inserisce in coda
// Salva su disco tutte le torte
void salvaTorte(Torta torte[], int numeroTorte) {
ofstream file("torte.txt");
for (int i=0; i<numeroTorte; i++) {
file.write((char*)&torte[i], sizeof(Torta));
}
file.close();
};
// Carica da disco tutte le torte precedentemente salvate
int caricaTorte(Torta torte[]) {
int numeroTorte = 0;
ifstream file("torte.txt");
char data[sizeof(Torta)];
while (file.read(data, sizeof(Torta))) {
torte[numeroTorte++] = *((Torta*)data);
}
file.close();
return numeroTorte;
};
void stampaTorta(Torta p); // Stampa solo la pizza passata
void stampaTorte(Torta torte[], int numeroTorte); // Stampa l'elenco di tutte le torte
void ordinaTorte(Torta torte[], int numeroTorte); // Mette in ordine le torte
void inserisciTortaInOrdine(Torta torte[], int &numeroTorte); // Inserisce in ordine
Torta cercaTortaPerNome(Torta torte, char nome[]); // Restituisce la torta con il nome passato
Torta cercaTortaPerPosizione(Torta torte, char nome[]); // Restituisce la torta con il nome passato
int main() { // Aggiungi un menu
Torta torte[50]; // Dichiaro un vettore di 50 torte
int numeroTorte=0; // tengo traccia di quante torte ci sono, 0 all'inizio
inserisciTortaInCoda(torte, numeroTorte);
inserisciTortaInCoda(torte, numeroTorte);
salvaTorte(torte, numeroTorte);
numeroTorte = caricaTorte(torte);
cout << torte[0].nome << " " << torte[0].numeroIngredienti << endl;
cout << torte[0].ingredienti[1].nome << " " << torte[0].ingredienti[1].quantita;
}
Dopo avere analizzato il codice precedente completa il programma con le seguenti funzionalità:
Quindi carica su moodle il programma realizzato.
Maggiori informazioni su cplusplus
Buon lavoro!