Salve devo fare un esercizio in c la traccia è la seguente:
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)
Implementazione l’algoritmo per la simulazione del distributore (e.g, struttura
matriciale) ed effettuare almeno un test per ognuna delle opzioni richieste dall’utente.
Ho scritto il codice ma sono bloccato così:
#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;
};
int main()
{
// Creazione del distributore.
typedef struct bibite Bibite;
Bibite array_bibite[10] = {{"Acqua", 0, 0.40, 10},
{"CocaCola", 1, 0.60, 10},
{"Pepsi", 2, 0.50, 10},
{"Sprite", 3, 0.70, 10},
{"Fanta", 4, 0.70, 10},
{"EstaTHE", 5, 0.20, 10},
{"Succo", 6, 0.10, 10},
{"Gassosa", 7, 0.40, 10},
{"Powered", 8, 0.90, 10},
{"Redbull", 9, 1.00, 10}};
// 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,contatore_while=0;
int j = 0;
for (i = 0; i < 10; i++) {
printf("%d - %s Prezzo: %1.2f\n", array_bibite[i].codice, array_bibite[i].nome,array_bibite[i].prezzo);
}
printf("\n");
printf("(10)Resoconto\n");
printf("(11)Termina la macchina.\n\n");
while(contatore_while==0){
printf("Inserire codice: ");
scanf("%d",&bibita_scelta);
switch(bibita_scelta){
case 10 : printf("Ciaone\n"); break;
case 11 : printf("Grazie e arrivederci\n"),contatore_while++; break;
default: printf("Hai scelto di prelevare %s. Inserisci delle monete (0.10, 0.20, 0.50, 1.00): ", array_bibite[bibita_scelta].nome);
scanf("%f", &monete_inserite);
if(monete_inserite != 0.10f && monete_inserite != 0.20f && monete_inserite != 0.50f && monete_inserite != 1.00f){
printf("Il distributore accetta solo monete da: 0.10, 0.20, 0.50, 1.00\n\n");
break;
}
else if(monete_inserite < array_bibite[bibita_scelta].prezzo){
printf("Credito insufficente per completare l'acquisto\n\n");
break;
}
else {resto = monete_inserite - array_bibite[bibita_scelta].prezzo;
printf("Hai acquistato %s\nResto=%1.2f\n\n",array_bibite[bibita_scelta].nome,resto);
break;}
}
}
return 0;
}