Ausgabe des Erwartungswertes
In diesem letzten Schritt verbessern Sie das Programm, um eine detailliertere Ausgabe und eine verbesserte Benutzererfahrung bei der Anzeige des Erwartungswertes zu erhalten.
Öffnen Sie die vorhandene Datei und nehmen Sie die endgültigen Änderungen vor:
cd ~/project
nano expected_value.c
Aktualisieren Sie den Code mit verbesserter Formatierung und Fehlerprüfung:
#include <stdio.h>
#define MAX_OUTCOMES 10
int main() {
double values[MAX_OUTCOMES];
double probabilities[MAX_OUTCOMES];
int num_outcomes;
double expected_value = 0.0;
double total_probability = 0.0;
printf("Erwartungswert-Rechner\n");
printf("======================\n");
// Eingabe der Anzahl der Ergebnisse
do {
printf("Geben Sie die Anzahl der Ergebnisse (1-%d) ein: ", MAX_OUTCOMES);
scanf("%d", &num_outcomes);
if (num_outcomes < 1 || num_outcomes > MAX_OUTCOMES) {
printf("Ungültige Anzahl der Ergebnisse. Bitte versuchen Sie es erneut.\n");
}
} while (num_outcomes < 1 || num_outcomes > MAX_OUTCOMES);
// Eingabe der Werte
printf("\nWerte eingeben:\n");
for (int i = 0; i < num_outcomes; i++) {
printf("Wert %d: ", i + 1);
scanf("%lf", &values[i]);
}
// Eingabe der Wahrscheinlichkeiten mit Validierung
printf("\nWahrscheinlichkeiten eingeben:\n");
for (int i = 0; i < num_outcomes; i++) {
printf("Wahrscheinlichkeit %d: ", i + 1);
scanf("%lf", &probabilities[i]);
total_probability += probabilities[i];
}
// Validierung der Gesamtwahrscheinlichkeit
if (total_probability < 0.99 || total_probability > 1.01) {
printf("\nWARNUNG: Die Wahrscheinlichkeiten summieren sich nicht zu 1,0 (aktuelle Summe: %.2f)\n",
total_probability);
}
// Berechnung des Erwartungswertes
for (int i = 0; i < num_outcomes; i++) {
expected_value += values[i] * probabilities[i];
}
// Ausgabe der detaillierten Ergebnisse
printf("\n--- Berechnungsdetails ---\n");
for (int i = 0; i < num_outcomes; i++) {
printf("Ergebnis %d: Wert = %.2f, Wahrscheinlichkeit = %.2f\n",
i + 1, values[i], probabilities[i]);
printf(" Beitrag: %.2f * %.2f = %.2f\n",
values[i], probabilities[i], values[i] * probabilities[i]);
}
// Ausgabe des endgültigen Erwartungswertes
printf("\n=== Erwartungswert ===\n");
printf("E(X) = %.2f\n", expected_value);
return 0;
}
Kompilieren und ausführen Sie das endgültige Programm:
gcc expected_value.c -o expected_value
./expected_value
Beispielausgabe:
Erwartungswert-Rechner
======================
Geben Sie die Anzahl der Ergebnisse (1-10) ein: 3
Werte eingeben:
Wert 1: 10
Wert 2: 20
Wert 3: 30
Wahrscheinlichkeiten eingeben:
Wahrscheinlichkeit 1: 0.2
Wahrscheinlichkeit 2: 0.5
Wahrscheinlichkeit 3: 0.3
--- Berechnungsdetails ---
Ergebnis 1: Wert = 10.00, Wahrscheinlichkeit = 0.20
Beitrag: 10.00 * 0.20 = 2.00
Ergebnis 2: Wert = 20.00, Wahrscheinlichkeit = 0.50
Beitrag: 20.00 * 0.50 = 10.00
Ergebnis 3: Wert = 30.00, Wahrscheinlichkeit = 0.30
Beitrag: 30.00 * 0.30 = 9.00
=== Erwartungswert ===
E(X) = 21.00
Wichtige Verbesserungen:
- Hinzugefügte Eingabevalidierung für die Anzahl der Ergebnisse
- Überprüfte Gesamtwahrscheinlichkeitssumme
- Verbesserte Ausgabeformatierung
- Angezeigt einzelne Ergebnisbeiträge
- Deutlich angezeigter endgültiger Erwartungswert