ehrlich gesagt nein ♦. Glaube auch mittlerweile das es falsch ist, aber habe jetzt keine Lust darüber nachzudenken ^^
/*
Lotterie_110201.c
*/
#include <stdio.h> //für das Programm notwendige Definitionsdateien einbinden
#include <stdlib.h>
#include <math.h>
FILE *ausgabe;
void intro(void)
{
puts("Lotterie Simulation\n01.02.2011\n\n");
}
double Abfrage_Bankroll(void)
{
double Bankroll;
char Einlesevariable[32];
Start_Abfrage_Bankroll:
puts("Bitte geben Sie den Wert Ihres Startkapitals ein (1 bis 1000)!");
fgets(Einlesevariable, 32, stdin);
Bankroll = atof(Einlesevariable);
if(Bankroll >= 1 && Bankroll <= 1000)
{
return Bankroll;
}
else
{
puts("Ihre Eingabe war fehlerhaft. Bitte geben Sie den Wert erneut ein!");
goto Start_Abfrage_Bankroll;
};
}
double Abfrage_Lotterie()
{
double Wahrscheinlichkeit;
char Einlesevariable[16];
Start_Abfrage_Lotterie:
printf("Bitte geben Sie die Gewinnwahrscheinlichkeit fuer ein Los in Prozent an!\n");
fgets(Einlesevariable, 16, stdin);
Wahrscheinlichkeit = atof(Einlesevariable);
if(Wahrscheinlichkeit > 0.001 && Wahrscheinlichkeit <= 100)
{
return Wahrscheinlichkeit;
}
else
{
puts("Ihre Eingabe war fehlerhaft. Bitte geben Sie den Wert erneut ein!");
goto Start_Abfrage_Lotterie;
};
}
double Abfrage_Preis_Lotterie()
{
double Preis_Lotterie;
char Einlesevariable[16];
Start_Abfrage_Preis_Lotterie:
printf("Bitte geben Sie den Preis eines Loses an (zwischen 0.001 und 100)!\n");
fgets(Einlesevariable, 16, stdin);
Preis_Lotterie = atof(Einlesevariable);
if(Preis_Lotterie > 0.001 && Preis_Lotterie <= 100)
{
return Preis_Lotterie;
}
else
{
puts("Ihre Eingabe war fehlerhaft. Bitte geben Sie den Wert erneut ein!");
goto Start_Abfrage_Preis_Lotterie;
};
}
double Abfrage_Gewinn_Lotterie()
{
double Gewinn_Lotterie;
char Einlesevariable[16];
Start_Abfrage_Gewinn_Lotterie:
printf("Bitte geben Sie den moeglichen Gewinn an (zwischen 0.001 und 100)!\n");
fgets(Einlesevariable, 16, stdin);
Gewinn_Lotterie = atof(Einlesevariable);
if(Gewinn_Lotterie > 0.001 && Gewinn_Lotterie <= 100)
{
return Gewinn_Lotterie;
}
else
{
puts("Ihre Eingabe war fehlerhaft. Bitte geben Sie den Wert erneut ein!");
goto Start_Abfrage_Gewinn_Lotterie;
};
}
double Abfrage_Anzahl_Simulationsvorgaenge(void)
{
int Anzahl_Simulationsvorgaenge;
char Einlesevariable[64];
Start_Abfrage_Anzahl_Simulationsvorgaenge:
puts("Bitte geben Sie die Anzahl Ihrer Simulationsvorgaenge an (1 bis 10000)!\n");
fgets(Einlesevariable, 64, stdin);
Anzahl_Simulationsvorgaenge = atoi(Einlesevariable);
if(Anzahl_Simulationsvorgaenge > 1 && Anzahl_Simulationsvorgaenge <= 10000)
{
return Anzahl_Simulationsvorgaenge;
}
else
{
puts("Ihre Eingabe war fehlerhaft. Bitte geben Sie den Wert erneut ein!");
goto Start_Abfrage_Anzahl_Simulationsvorgaenge;
};
}
void Ausgabe_Parameter(double Bankroll,double p_Lotterie, double Preis_Lotterie, double Gewinn_Lotterie, int Anzahl_Simulationen)
{
system("cls");
printf("Die Simulation wird mit folgenden von Ihnen gewaehlten Parametern ausgefuehrt!\n");
printf("Bankroll:\t%5.2lf\n", Bankroll);
printf("Wahrscheinlichkeit:\t%2.2lf\n", p_Lotterie);
printf("Preis pro Los:\t%4.2lf\n", Preis_Lotterie);
printf("Gewinn pro Los:\t%4.2lf\n", Gewinn_Lotterie);
printf("Durchgaenge:\t%d\n", Anzahl_Simulationen);
system("PAUSE");
}
double Berechnung_Intervall(double p, int i)
{
double Intervall = 0;
Intervall = 1.65*sqrt((p*(1-p))/i);
return Intervall;
}
double Berechnung_Bankroll(double Bankroll, double p, double Preis, double Gewinn)
{
if (p > 0 && p <= 1)
{
Bankroll = Bankroll - Preis + (p*Gewinn);
return Bankroll;
}
if (p > 1)
{
Bankroll = Bankroll - Preis + Gewinn;
return Bankroll;
}
if (p <= 0)
{
Bankroll = Bankroll - Preis;
return Bankroll;
}
}
void Ausgabe_Daten(int Durchlauf, double Bankroll_konservativ, double Bankroll_optimal, double Intervallgrenze, double p_konservativ, double p_optimal)
{
printf("%d\t%5.2lf\t%5.2lf\t%2.2lf\t%2.2lf\t%2.2lf\t\n", Durchlauf, Bankroll_konservativ, Bankroll_optimal, Intervallgrenze, p_konservativ, p_optimal);
// fprintf(ausgabe, "%d\t%5.2lf\t%5.2lf\t%2.2lf\t%2.2lf\t%2.2lf\t\n", Durchlauf, Bankroll_konservativ, Bankroll_optimal, Intervallgrenze, p_konservativ, p_optimal);
}
void Simulation(double Bankroll, double p_Lotterie, double Preis, double Gewinn, int Anzahl_Simulationen)
{
double Intervallgrenze = 0,
Bankroll_konservativ = 0,
Bankroll_optimal = 0,
p_konservativ = 0,
p_optimal = 0;
int i = 1;
Bankroll_konservativ = Bankroll;
Bankroll_optimal = Bankroll;
char dateiname[] = "ausgabe.dat";
ausgabe = fopen(dateiname, "w");
do
{
Intervallgrenze = Berechnung_Intervall(p_Lotterie, i);
p_konservativ = p_Lotterie - Intervallgrenze;
p_optimal = p_Lotterie + Intervallgrenze;
Bankroll_konservativ = Berechnung_Bankroll(Bankroll_konservativ, p_konservativ, Preis, Gewinn);
Bankroll_optimal = Berechnung_Bankroll(Bankroll_optimal, p_optimal, Preis, Gewinn);
Ausgabe_Daten(i, Bankroll_konservativ, Bankroll_optimal, Intervallgrenze, p_konservativ, p_optimal);
i = i++;
}
while (i < (Anzahl_Simulationen+1));
fclose(ausgabe);
}
int main(void)
{
double Bankroll = 0,
p_Lotterie = 0,
Preis_Lotterie = 0,
Gewinn_Lotterie = 0;
int Anzahl_Simulationen = 1000;
intro();
Bankroll = Abfrage_Bankroll();
p_Lotterie = Abfrage_Lotterie();
Preis_Lotterie = Abfrage_Preis_Lotterie();
Gewinn_Lotterie = Abfrage_Gewinn_Lotterie();
Anzahl_Simulationen = Abfrage_Anzahl_Simulationsvorgaenge();
Ausgabe_Parameter(Bankroll,p_Lotterie, Preis_Lotterie, Gewinn_Lotterie, Anzahl_Simulationen);
Simulation(Bankroll, p_Lotterie / 100, Preis_Lotterie, Gewinn_Lotterie, Anzahl_Simulationen);
system("PAUSE");
return 0;
}
Hier mal mein Quellcode