Salve e buongiorno a tutti !
Ho questo progetto da fare :
Si vuole simulare la gestione annuale di un distributore automatico di bibite. Si
suppone di avere 10 prodotti identificati da un nome, da un codice identificativo
e da un prezzo.
Permettere all’utente di:
• Di inserire dei soldi (10, 20, 50 centesimi, 1 euro) e scegliere un
prodotto
o In base al costo verificare se è possibile prendere il prodotto
o Verificare se c’è bisogno di dare del resto
• Data una data e un prodotto calcolare la quantità venduta nel giorno di
riferimento (usare un algoritmo incrementale ricorsivo)
attualmente ho fatto questo :
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
// Creazione delle STRUCT.
struct bibite {
char nome[100];
int codice;
float prezzo;
int disponibilita;
};
struct data {
int giorno;
int mese;
int codice;
};
int main()
{
// Creazione del distributore.
typedef struct bibite Bibite;
Bibite array_bibite[10] = {{"Coca-Cola", 0, 0.60, 10},
{"Sprite", 1, 0.50, 10},
{"RedBull", 2, 1.00, 10},
{"Burn", 3, 1.00, 10},
{"Fanta", 4, 0.20, 10},
{"PowerRade", 5, 1.00, 10},
{"Energy", 6, 0.50, 10},
{"San Pellegrino", 7, 1.00, 10},
{"Pepsi", 8, 0.50, 10},
{"Gatorade", 9, 1.00, 10}};
typedef struct data Data;
Data array_data[365];
// Scelta di una bibita da parte dell'utente.
printf("Sono presenti le seguenti bibite:\n");
// Dichiarazione delle variabili.
float monete_inserite, resto;
int i, bibita_scelta;
int j = 0;
for (i = 0; i < 10; i++) {
printf("%d - %s\n", array_bibite[i].codice, array_bibite[i].nome);
}
printf("\n");
printf("(10)Termina la macchina.\n");
printf("(11)Resoconto.");
// Trova la data di oggi.
time_t t = time(NULL);
struct tm *time;
time = localtime(&t);
int giorno = time->tm_mday;
int mese = time->tm_mon;
while (1) {
printf("\n");
printf("Scegli una bibita (INSERISCI IL CODICE CORRISPONDENTE):\n");
scanf("%d", &bibita_scelta);
if (bibita_scelta == 10) {
printf("Operazioni eseguite: %d", j);
break;
}
if (bibita_scelta == 11) {
int giorno_1, codice_1;
printf("Il giorno richiesto:\n");
scanf("%d", &giorno_1);
printf("Il prodotto richiesto:\n");
scanf("%d", &codice_1);
break;
}
if (bibita_scelta != 10 && bibita_scelta != 11) {
printf("Hai scelto di prelevare %s", array_bibite[bibita_scelta].nome);
printf("\n");
printf("Inserisci delle monete (0.10, 0.20, 0.50, 1.00):\n");
scanf("%f", &monete_inserite);
printf("\n");
}
// Controllo se è possibile ricevere la bibita.
if (monete_inserite == 0.10 || monete_inserite == 0.20 || monete_inserite == 0.50 || monete_inserite == 1.00) {
if (monete_inserite < array_bibite[bibita_scelta].prezzo) {
printf("NON HAI ABBASTANZA CREDITO PER AVERE LA BIBITA SCELTA.\n");
} else if (monete_inserite == array_bibite[bibita_scelta]. prezzo) {
printf("STAI PER AVERE LA BIBITA SCELTA.\nGRAZIE.\n");
printf("(Nessun resto da dare).");
// Inserisci la data di oggi nell'array di struct.
j++;
array_data[j].giorno = giorno;
array_data[j].mese = mese;
array_data[j].codice = bibita_scelta;
} else if (monete_inserite > array_bibite[bibita_scelta].prezzo) {
printf("STAI PER RICEVERE LA BIBITA SCELTA.\nGRAZIE.\n");
resto = monete_inserite - array_bibite[bibita_scelta].prezzo;
printf("(Resto da ricevere: %f).", resto);
// Inserisci la data di oggi nell'array di struct.
j++;
array_data[j].giorno = giorno;
array_data[j].mese = mese;
array_data[j].codice = bibita_scelta;
}
} else {
printf("CI DISPIACE, MA LA MACCHINA ACCETTA SOLO MONETE DA 0.10, 0.20, 0.50, 1.00.");
}
}
return 0;
}
Adesso devo costruire la funzione ricorsiva che permetta il calcolo delle bibite vedute in un singolo giorno ..
Qualche suggerimento ? Premetto che le funzioni ricorsive non le ho capite appieno ...
Ringrazio in anticipo