
Aaalso, um das mal ausführlich zu machen:
Und nun die jeweilige Erklärung dazu:#include <time.h>
#include <iostream>
#include <stdlib.h>
#include <stdio.h>
int main ()
{
int augen=0, anzahl=0;
int augenzahl[6]={0,0,0,0,0,0};
srand ( time(NULL) );
std::cout << "Wie oft soll gewuerfelt werden?" << std::endl;
std::cin >> anzahl;
anzahl++; //(1)
int a = 0;
while (anzahl >= a) //(2)
{
augen = rand () % 6 + 1;
if (a!=0)
{
std::cout << augen << " ";
if (augen < 7)
augenzahl[augen]++;
else
{
std::cout << "Ein Fehler ist aufgetreten, Das Programm wird beendet" << std::endl;
exit(0);
}
} //(3)
a++;
}
std::cout << std::endl;
std::cout << "eins: " << augenzahl[1] << std::endl;
std::cout << "zwei: " << augenzahl[2] << std::endl;
std::cout << "drei: " << augenzahl[3] << std::endl;
std::cout << "vier: " << augenzahl[4] << std::endl;
std::cout << "fünf: " << augenzahl[5] << std::endl;
std::cout << "sechs: " << augenzahl[6] << std::endl; //(4)
std::cout << "Das Programm wurde erfolgreich ausgeführt.";
return 0;
}
(1) :
Du bekommst eine Anzahl vom Benutzer. Die musst du nicht erhöhen. Das kann evtl eine "Lösung" sein, schick oder gar sinnvoll ist das nicht. Meist zeigt die Tatsache, dass du zu so etwas kommst eher, dass wo anders was falsch läuft...
(2):
Das ist zum ersten schlecht zu lesen und zum anderen falsch.
Du willst genau ANZAHL Durchläufe haben.
Nehmen wir an, du hast die Anzahl = 2.
Dann bekommst du hier 3 Durchläufe, und zwar bei a=0, a=1, a=2
Ich würde dir folgendes empfehlen:
Code: Alles auswählen
while ( a < anzahl )
Code: Alles auswählen
int a = 1;
while ( a <= anzahl)
(3):
Dein Code wird da sehr verzwickt, obwohl es sich eigentlich um eine einfache Sache handelt.
Überleg dir nochmal, was du möchtest. Und auch, was du bisher programmiert hast.
Du hast eine Schleife, die läuft Anzahl-mal durch.
Jedes mal willst du eine Zahl zwischen 1 und 6 "würfeln", und je nach dem notieren, dass diese Zahl gewürfelt wurde (und wie damit wie oft sie gewürfelt wurde)
Code: Alles auswählen
// Das kommt in die while-Schleife
int wurf = (rand() % 6) + 1;
// Damit ist wurf eine Zahl zwischen 1 und 6
// Das ist damit eigentlich schlecht, denn dein Array zählt ab 0 bis 5
augenzahl[wurf-1]++;
// Jetzt hast du den Zähler für die jeweilige, gewürfelte Zahl erhöht (augenzahl[0] ist der Zähler für die Zahl 1)
a++;
// Damit deine Schleife auch irgendwann fertig wird
(4):
augenzahl[6] geht nicht, da dein Array nur 6 Elemente hat und es bei 0 zu zählen beginnt!
Damit hat das 6te Element den Index (die "Adresse") 5.