Ich kann die Zeile nach der zweiten Zählschleife nicht mehr richtig nachvollziehen. Ich denke der Fehler liegt in diesem Abschnitt.
Code:
for (i = 0; i < 6; i++)
{
do
{
zahlen[i] = rand() % 45 + 1; //Zufallszahl generieren
flag = 0;
for(j = i - 1; j >= 0; j--)
{
if(zahlen[i] == zahlen[j]) //Prüfen, ob Zufallszahl bereits
flag = 1; //im Array vorhanden, wenn ja, dann
} //neuer Durchlauf
} while(flag == 1);
Du weist dem ersten Array (Zahlen[0]) die erste Zufallszahl zu. Bis dahin richtig. Dann setzt du flag auf null ist auch OK. Aber in der nächsten Zählschleife setzt du j auf -1, denn du benutzt die Variable i und nicht das Feld zahlen[i]. Ich denke das hier ein Fehler vorliegt, denn in der Bedingung vergleichst du praktisch die Arrays zahlen[0] mit zahlen[-1]. Dabei ist zahlen[-1] keinem Wert zugeordnet.