mistergks
01-04-2011, 18:29
Non riesco a risolvere questo esercizio:
Il nostro amico Ciccio Pasticcio e la sua dolce mogliettina Renata Limbranata hanno preso in gestione una pasticceria. Renata prepara i dolci, mentre Ciccio si occupa di prendere le ordinazioni dei clienti e fare la spesa necessaria a Renata per realizzare il dolce così come indicato sul suo libro di ricette.
Tuttavia, Ciccio come al solito fa molti pasticci, sbaglia nel prendere le ordinazioni segnando un dolce per un altro e dimentica sempre di comprare qualche ingrediente. Renata, disperata poiché per colpa di Ciccio finora non è riuscita a soddisfare nessun cliente, ci chiede aiuto. A tale scopo si scriva in C++ un programma completo opportunamente modularizzato in funzioni che 1) mostri al cliente l’elenco dei dolci tra cui può scegliere, e ne prenda l’ordinazione; 2) cerchi nel libro di ricette di Renata la ricetta corrispondente al dolce scelto e 3) compili la lista della spesa evitando di aggiungere alla lista ingredienti già presenti nella dispensa. Il libro di ricette è un elenco di stringhe ognuna delle quali ha il seguente formato:
Nome della Ricetta. Ingredienti: ingrediente1, ingrediente2, …,ingredienteN.
Preparazione: istruzione1, istruzione2, …, istruzioneK.
Esempio: un cliente entra nella pasticceria e Ciccio mostra il seguente menù:
1) Torta Al Cioccolato e Panna
2) Tiramisù
3) Bavarese alle Fragole
...
Supponiamo che il cliente scelga il Tiramisù. Allora il programma accede nel libro delle ricette alla posizione corrispondente al Tiramisù ed, esaminando la stringa ivi contenuta, ad esempio
Tiramisù. Ingredienti: zucchero, uova, biscotti, mascarpone, caffè. Preparazione: unire le uova con lo zucchero, aggiungere il mascarpone, etc.
recupera gli ingredienti zucchero, uova, biscotti, mascarpone, caffè, controlla nella dispensa quale di questi è già presente e aggiunge i mancanti nella lista della spesa. Supponendo che nella dispensa siano presenti uova, cioccolato, mascarpone, farina, lievito la lista della spesa dovrà contenere zucchero, biscotti e caffè.
Ho provato ad implementare qualcosa e per ora sono riuscito a fare soltanto una funzione che mostri il menu al cliente.. può andare?! sono indeciso su cosa usare per fare questo libro delle ricette... all'inizio avevo pensato ad un array di char ma poi ho dovuto farla diventare una matrice...altrimenti non potevo stampare solo i nomi delle ricette...
Poi avrei pensato di fare un'altra funzione che prende in input la scelta(ordinazione) del cliente e che mi dia gli ingredienti di quella determinata ordinazione da inserire poi magari con un altra funzione in un nuovo array di char chiamato "lista della spesa". Fatto questo, penso che bisogna assumere che esista già un array in cui sono inseriti gli ingredienti già in dispensa(almeno credo!) e quindi mi serve una funzione che verifichi se la "listadellaspesa" contiene ingredienti uguali alla "listadelladispensa". Se li contiene dovrebbe eliminarli da "listadellaspesa"...
void menu(char ricette[][], int dim) {
for(int i=0; ricette[i][j]!= '\0'; i++)
for(int j=0; ricette[i][j]!='.'; i++)
cout<<"menu: "<< ricette[i][j];
}
Il nostro amico Ciccio Pasticcio e la sua dolce mogliettina Renata Limbranata hanno preso in gestione una pasticceria. Renata prepara i dolci, mentre Ciccio si occupa di prendere le ordinazioni dei clienti e fare la spesa necessaria a Renata per realizzare il dolce così come indicato sul suo libro di ricette.
Tuttavia, Ciccio come al solito fa molti pasticci, sbaglia nel prendere le ordinazioni segnando un dolce per un altro e dimentica sempre di comprare qualche ingrediente. Renata, disperata poiché per colpa di Ciccio finora non è riuscita a soddisfare nessun cliente, ci chiede aiuto. A tale scopo si scriva in C++ un programma completo opportunamente modularizzato in funzioni che 1) mostri al cliente l’elenco dei dolci tra cui può scegliere, e ne prenda l’ordinazione; 2) cerchi nel libro di ricette di Renata la ricetta corrispondente al dolce scelto e 3) compili la lista della spesa evitando di aggiungere alla lista ingredienti già presenti nella dispensa. Il libro di ricette è un elenco di stringhe ognuna delle quali ha il seguente formato:
Nome della Ricetta. Ingredienti: ingrediente1, ingrediente2, …,ingredienteN.
Preparazione: istruzione1, istruzione2, …, istruzioneK.
Esempio: un cliente entra nella pasticceria e Ciccio mostra il seguente menù:
1) Torta Al Cioccolato e Panna
2) Tiramisù
3) Bavarese alle Fragole
...
Supponiamo che il cliente scelga il Tiramisù. Allora il programma accede nel libro delle ricette alla posizione corrispondente al Tiramisù ed, esaminando la stringa ivi contenuta, ad esempio
Tiramisù. Ingredienti: zucchero, uova, biscotti, mascarpone, caffè. Preparazione: unire le uova con lo zucchero, aggiungere il mascarpone, etc.
recupera gli ingredienti zucchero, uova, biscotti, mascarpone, caffè, controlla nella dispensa quale di questi è già presente e aggiunge i mancanti nella lista della spesa. Supponendo che nella dispensa siano presenti uova, cioccolato, mascarpone, farina, lievito la lista della spesa dovrà contenere zucchero, biscotti e caffè.
Ho provato ad implementare qualcosa e per ora sono riuscito a fare soltanto una funzione che mostri il menu al cliente.. può andare?! sono indeciso su cosa usare per fare questo libro delle ricette... all'inizio avevo pensato ad un array di char ma poi ho dovuto farla diventare una matrice...altrimenti non potevo stampare solo i nomi delle ricette...
Poi avrei pensato di fare un'altra funzione che prende in input la scelta(ordinazione) del cliente e che mi dia gli ingredienti di quella determinata ordinazione da inserire poi magari con un altra funzione in un nuovo array di char chiamato "lista della spesa". Fatto questo, penso che bisogna assumere che esista già un array in cui sono inseriti gli ingredienti già in dispensa(almeno credo!) e quindi mi serve una funzione che verifichi se la "listadellaspesa" contiene ingredienti uguali alla "listadelladispensa". Se li contiene dovrebbe eliminarli da "listadellaspesa"...
void menu(char ricette[][], int dim) {
for(int i=0; ricette[i][j]!= '\0'; i++)
for(int j=0; ricette[i][j]!='.'; i++)
cout<<"menu: "<< ricette[i][j];
}