Kann ich machen aber das Problem ist das eine text bestand-Datei noch dazugeführt ist die Bestandsdaten einliest.
In der bestands-text Datei sind 14 zahlen die eingelesen werden und durch die jeweiligen Kaffee Rezepte werden die Bestands-Daten geändert.
Ich weiß das hier noch ein paar mehr Fehler drin sind aber erstmal muss ich den Fehler finden beim Geldwechseln bevor ich mit meinem Programm weiter arbeiten kann.
#include <stdio.h>
#define MILCH 0
#define KAFFEE 1
#define KAKAO 2
#define BECHER 3
#define CENT1 4
#define CENT2 5
#define CENT5 6
#define CENT10 7
#define CENT20 8
#define CENT50 9
#define EURO1 10
#define EURO2 11
#define EURO5 12
#define EURO10 13
#define MAX_REZEPTE 4
#define MAX_KOSTEN 4
#define MAX_GELD 10
typedef struct {
char name[20];
int wasser; // ml
int milch; // ml
int kaffee; // gr
int kakao; // gr
}rezept;
typedef struct {
char sorte[20];
int cent; //$
}tabelle;
typedef struct {
char name[20];
int muenzwert;
int menge;
}geld;
int t;
int halt=0;
int i; // Ausgewähltes Getränk
int ende=0;
int f;
int stp=0;
int w;
int bestand[14]; // Bestand an Milch, Kaffee und Kakao, Bechern und Geld
int was;
float gel;
int zurueck;
int rueck;
int cen;
void bestandLesen();
void bestandSchreiben();
int geldwechseln();
rezept rezepte[MAX_REZEPTE]={
{"Kaffee",200,0,6,0},
{"Capuccino",100,40,10,0},
{"Espresso",80,0,9,0},
{"Kakao",0,200,0,10}
};
tabelle stueckpreis[MAX_KOSTEN] = {
{"Kaffee", 170},
{"Capuccino", 300},
{"Espresso", 200},
{"Kakao", 150}
};
geld kapital[MAX_GELD] = {
{"Ein Cent", 1, 0},
{"Zwei Cent", 2, 0},
{"Fünf Cent", 5, 0},
{"Zehn Cent", 10, 0},
{"Zwanzig Cent", 20, 0},
{"Fünfzig Cent", 50, 0},
{"Ein Euro", 100, 0},
{"Zwei Euro", 200, 0},
{"Fünf Euroschein", 500, 0},
{"Zehn Euroschein",1000, 0},
};
int main() {
for(t=0;t<MAX_KOSTEN;t++){
printf("Ein %s kostet: %d Cent\n", stueckpreis[t].sorte, stueckpreis[t].cent);
}
bestandLesen();
bestandSchreiben();
for(i=0;i<MAX_REZEPTE;i++) {
printf("\nEin %s besteht aus:\n%dml Wasser, %dml Milch, %dgr Kaffee und %dgr Kakao\n\n",
rezepte.name, rezepte.wasser, rezepte.milch,
rezepte.kaffee, rezepte.kakao);
}
do { // Einen Cappucino anrühren:
printf("\nWas solls sein? 0 Kaffe 1 Capu 2 Espresso 3 Kakao 4 ENDE");
fflush(stdin);
scanf("%i",&was); // rezepte[1] ist Capuccino
if(was==4) {
ende=1;
}
else if ((was==0) && (bestand[KAFFEE]>=rezepte[was].kaffee)) {
printf("Bestand ausreichend\n");
ende=0;
printf("Bitte Geld einwerfen\n");
scanf("%f", &gel);
cen=(gel*100);
rueck=(cen-stueckpreis[was].cent);
if(cen>=stueckpreis[was].cent) {
printf("Ausreichend Geld eingeworfen...\n");
//Prüfen ob Geldwechseln möglich ist...
geldwechseln();
printf("Du bekommst einen %s\n",rezepte[was].name); // Das wäre jetzt nicht nötig
bestand[MILCH]=bestand[MILCH]-rezepte[was].milch;
bestand[KAFFEE]=bestand[KAFFEE]-rezepte[was].kaffee;
bestand[KAKAO]=bestand[KAKAO]-rezepte[was].kakao;
bestand[BECHER]=bestand[BECHER]-1;
bestand[CENT1];
bestand[CENT2];
printf("\nRohstoffbestand nach dem Anruehren:\n");
printf("Milch %i ml Kaffee %i gr Kakao %i gr Cent %i\n",bestand[MILCH],bestand[KAFFEE],bestand[KAKAO],bestand[CENT1]);
printf("Noch %i Becher da\n",bestand[BECHER]);
printf("%i\n",bestand[CENT2]);
printf("\nBitte Getraenkt entnehmen");
}
else if (gel<stueckpreis[was].cent) {
printf("Nicht genug Geld eingeworfen!");
printf("Ihr eingeworfenes Geld: %f Euro", gel);
}
}
else if ((was==0) && (bestand[KAFFEE]<rezepte[was].kaffee)) {
printf("Bestand nicht ausreichend, Automat muss aufgefuellt werden");
ende==1;
}
else if ((was==1) && (bestand[MILCH]>=rezepte[was].milch) && (bestand[KAFFEE]>=rezepte[was].kaffee)) {
printf("Bestand ausreichend");
ende=0;
printf("Du bekommst einen %s\n",rezepte[was].name); // Das wäre jetzt nicht nötig
bestand[MILCH]=bestand[MILCH]-rezepte[was].milch;
bestand[KAFFEE]=bestand[KAFFEE]-rezepte[was].kaffee;
bestand[KAKAO]=bestand[KAKAO]-rezepte[was].kakao;
bestand[BECHER]=bestand[BECHER]-1;
printf("Rohstoffbestand nach dem Anruehren\n");
printf("Milch %i ml Kaffee %i gr Kakao %i gr Cent %i\n",bestand[MILCH],bestand[KAFFEE],bestand[KAKAO],bestand[4]);
printf("Noch %i Becher da\n",bestand[BECHER]);
printf("\nBitte Getraenkt entnehmen");
}
else if ((was==1) && (bestand[MILCH]<rezepte[was].milch) && (bestand[KAFFEE]<rezepte[was].kaffee)) {
printf("Bestand nicht ausreichend, Automat muss aufgefuellt werden");
ende==1;
}
else if ((was==2) && (bestand[KAFFEE]>=rezepte[was].kaffee)) {
printf("Bestand ausreichend");
ende=0;
printf("Du bekommst einen %s\n",rezepte[was].name); // Das wäre jetzt nicht nötig
bestand[MILCH]=bestand[MILCH]-rezepte[was].milch;
bestand[KAFFEE]=bestand[KAFFEE]-rezepte[was].kaffee;
bestand[KAKAO]=bestand[KAKAO]-rezepte[was].kakao;
bestand[BECHER]=bestand[BECHER]-1;
printf("Rohstoffbestand nach dem Anruehren\n");
printf("Milch %i ml Kaffee %i gr Kakao %i gr\n",bestand[MILCH],bestand[KAFFEE],bestand[KAKAO]);
printf("Noch %i Becher da\n",bestand[BECHER]);
printf("\nBitte Getraenkt entnehmen");
}
else if ((was==2) && (bestand[KAFFEE]<rezepte[was].kaffee)) {
printf("Bestand nicht ausreichend, Automat muss aufgefuellt werden");
ende==1;
}
else if ((was==3) && (bestand[KAKAO]>=rezepte[was].kakao) && (bestand[MILCH]>=rezepte[was].milch)) {
printf("Bestand ausreichend");
ende=0;
printf("Du bekommst einen %s\n",rezepte[was].name); // Das wäre jetzt nicht nötig
bestand[MILCH]=bestand[MILCH]-rezepte[was].milch;
bestand[KAFFEE]=bestand[KAFFEE]-rezepte[was].kaffee;
bestand[KAKAO]=bestand[KAKAO]-rezepte[was].kakao;
bestand[BECHER]=bestand[BECHER]-1;
printf("Rohstoffbestand nach dem Anruehren\n");
printf("Milch %i ml Kaffee %i gr Kakao %i gr\n",bestand[MILCH],bestand[KAFFEE],bestand[KAKAO]);
printf("Noch %i Becher da\n",bestand[BECHER]);
printf("\nBitte Getraenkt entnehmen");
}
else if ((was==3) && (bestand[KAKAO]<rezepte[was].kakao) && (bestand[MILCH]<rezepte[was].milch)) {
printf("Bestand nicht ausreichend, Automat muss aufgefuellt werden");
ende==1;
}
} while(ende==0);
printf("Vielen Dank und beehren Sie uns bald wieder.\n");
}
void bestandLesen() {
FILE *in;
in=fopen("bestand.dat","r");
fscanf(in,"%i",&bestand[MILCH]);
fscanf(in,"%i",&bestand[KAFFEE]);
fscanf(in,"%i",&bestand[KAKAO]);
fscanf(in,"%i",&bestand[BECHER]);
fscanf(in,"%i",&bestand[CENT1]);
fscanf(in,"%i",&bestand[CENT2]);
fscanf(in,"%i",&bestand[CENT5]);
fscanf(in,"%i",&bestand[CENT10]);
fscanf(in,"%i",&bestand[CENT20]);
fscanf(in,"%i",&bestand[CENT50]);
fscanf(in,"%i",&bestand[EURO1]);
fscanf(in,"%i",&bestand[EURO2]);
fscanf(in,"%i",&bestand[EURO5]);
fscanf(in,"%i",&bestand[EURO10]);
/*MAX_BETRAG=(kapital[0]+kapital[123456789])*/
printf("\nBestand an Rohstoffen:\n");
printf("Milch %i ml\nKaffee %i gr\nKakao %i gr\n%i 1Centstuecke\n%i 2Centstuecke\n%i 5Centstuecke\n%i 10Centstuecke\n%i 20Centstuecke\n%i 50Centstuecke\n%i 1Eurostuecke\n%i 2Eurostuecke\n%i 5Euroschein\n%i 10Euroschein\n",bestand[MILCH],bestand[KAFFEE],bestand[KAKAO],bestand[CENT1],bestand[CENT2],bestand[CENT5],bestand[CENT10],bestand[CENT20],bestand[CENT50],bestand[EURO1],bestand[EURO2],bestand[EURO5],bestand[EURO10]);
fclose(in);
}
void bestandSchreiben() {
FILE *out;
out=fopen("bestand.dat","w");
fprintf(out,"%i\n",bestand[MILCH]);
fprintf(out,"%i\n",bestand[KAFFEE]);
fprintf(out,"%i\n",bestand[KAKAO]);
fprintf(out,"%i\n",bestand[BECHER]);
fprintf(out,"%i\n",bestand[CENT1]);
fprintf(out,"%i\n",bestand[CENT2]);
fprintf(out,"%i\n",bestand[CENT5]);
fprintf(out,"%i\n",bestand[CENT10]);
fprintf(out,"%i\n",bestand[CENT20]);
fprintf(out,"%i\n",bestand[CENT50]);
fprintf(out,"%i\n",bestand[EURO1]);
fprintf(out,"%i\n",bestand[EURO2]);
fprintf(out,"%i\n",bestand[EURO5]);
fprintf(out,"%i\n",bestand[EURO10]);
fclose(out);
}
int geldwechseln() {
if(gel!=0) {
int wechselgeld[] = {1000, 500, 200, 100, 50, 20, 10, 5, 2, 1};
int i = 0;
int b;
while(i<=9) {
b = rueck/wechselgeld;
if (b>=0) {
printf("Sie bekommen %i, mal %i, Cent\n", b, wechselgeld);
rueck=rueck-b*wechselgeld;
i++;
}
}
return 0;
}
}