Moin!
ich muss folgende Aufgabe programmieren:
Ich weiß jedoch nicht, ob ich jetzt fertig bin bzw. ob das jetzt so richtig ist! Das Programm funktioniert ohne zu mucken. Aber ich bin mir mit dem zufallsgenerato rnoch nicht so im reinen!
hier erst mal mein programmcode:
Also ich habe das mit dem Zufallsgenerator so verstanden, dass srand() den Zufallsgen, initialisiert. ich starte den Zufallsgenerator also mit der Zahl 45 (srand(45))!
Also fängt der Zufallsgenerator doch erst ab der Zahl 45 an,oder?!
habe ichd as so richtig verstanden???
und könnte jemand das Programm mal ausprobieren, ob ich meine Aufgabe so richtig gelöst habe?
ich weiß echt nicht weiter und das Ergebnis sieht echt komisch aus!
Danke schon mal!
Gruß Sheddy
ich muss folgende Aufgabe programmieren:
Ich weiß jedoch nicht, ob ich jetzt fertig bin bzw. ob das jetzt so richtig ist! Das Programm funktioniert ohne zu mucken. Aber ich bin mir mit dem zufallsgenerato rnoch nicht so im reinen!
hier erst mal mein programmcode:
Code:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define X 10 /* Zeile */
#define Y 10 /* Spalte */
void init_world(char (*)[Y]);
void next_gen(char (*)[Y], char (*)[Y]);
void put_world(char (*)[Y]);
int main(void)
{
int x=0;
char gen1[X][Y];
char gen2[X][Y];
srand(45); /* Zufallsgenerator bei der Zahl 45 starten */
init_world(gen1);
put_world(gen1); /* (KANN AUCH ENTFALLEN)Ausgabe der ersten Zufallsmatrix / Zur Kontrolle, ob sie zufällig initialisiert wurde */
do
{
next_gen(gen1,gen2);
put_world(gen1);
x++;
}while(x<10);
getchar();
return 0;
}
void init_world(char (*world)[Y])
{
int i, k;
for(i=0; i<X; i++)
{
for(k=0; k<Y; k++)
{
world[i][k]=rand()%2; /* Zufallsgenerator weist dem array 0 oder 1 zu */
}
}
}
void next_gen(char (*now)[Y], char (*next)[Y])
{
int i, k, star=0;
for(i=0; i<X; i++)
{
for(k=0; k<Y; k++)
{
if((i-1>=0)&&(k-1>=0)) /* oben links */
{
if(now[i-1][k-1]==1)
{
star++;
}
}
if(i >= 0) /* oben */
{
if(now[i-1][k]==1)
{
star++;
}
}
if((i-1>=0)&&(k+1<=Y)) /* oben rechts*/
{
if(now[i-1][k+1]==1)
{
star++;
}
}
if(k-1>=0) /* links */
{
if(now[i][k-1]==1)
{
star++;
}
}
if(k+1<=Y) /* rechts */
{
if(now[i][k+1]==1)
{
star++;
}
}
if((i+1<=X)&&(k-1>=0)) /* unten links */
{
if(now[i+1][k-1]==1)
{
star++;
}
}
if(i+1<X) /* unten */
{
if(now[i+1][k]==1)
{
star++;
}
}
if((i+1<=X)&&(k+1<=Y)) /* unten rechts */
{
if(now[i+1][k+1]==1)
{
star++;
}
}
/* Leben oder Tod */
if((star < 2) || (star > 3) )
{
next[i][k]=0;
}
else if(star == 3)
{
next[i][k]=1;
}
else if(star == 2)
{
next[i][k]=now[i][k];
}
}
}
for(i=0; i<X; i++)
{
for(k=0; k<Y; k++)
{
now[i][k]=next[i][k];
}
}
}
void put_world(char (*pgen)[Y])
{
int i, k;
for(i=0; i<X; i++)
{
for(k=0; k<Y; k++)
{
if(pgen[i][k] == 0)
{
printf("%c",' ');
}
else
{
printf("%c",'*');
}
}
printf("\n");
}
printf("\n--------------\n");
}
Also ich habe das mit dem Zufallsgenerator so verstanden, dass srand() den Zufallsgen, initialisiert. ich starte den Zufallsgenerator also mit der Zahl 45 (srand(45))!
Also fängt der Zufallsgenerator doch erst ab der Zahl 45 an,oder?!
habe ichd as so richtig verstanden???
und könnte jemand das Programm mal ausprobieren, ob ich meine Aufgabe so richtig gelöst habe?
ich weiß echt nicht weiter und das Ergebnis sieht echt komisch aus!
Danke schon mal!
Gruß Sheddy