000
28.04.2004, 15:24 Uhr
~1Stein
Gast
|
Hab folgendes Problem: Ich müss für die Schule ein Programm schreiben (in C++, Konsolenanwendung), dass die Lebenszyklen nach dem Game of Life Prinzib berechnet und ausgibt. Genaueres zum Game of Life: www.math.com/students/wonders/life/life.html
Hab mal ein proggi geschrieben, funtzt aber net so wie es soll...
Hier der Code:
C++: |
#include <iostream> #include <conio> #include <windows> using namespace std;
const int Q=12;
int nb(int, int, int); bool arr[Q][Q][2];
void main() { // W(rite)=new, R(ead)=old int R=0,W=1,zuf,i,j,anz;
//1. Feld anfüllen W=[1] //randomize(); for(i=1;i<=(Q-1);i++) { for(j=1;j<=(Q-1);j++) { zuf=rand()%2; if(zuf==1) arr[i][j][W]=true; else arr[i][j][W]=false; } }
//Rand in beiden Feldern mit false füllen for(i=0;i<2;i++) { for(j=0;j<12;j++) { arr[0][j][i]=false; arr[j][0][i]=false; arr[11][j][i]=false; arr[j][11][i]=false; } } //eigentliches Programm do { clrscr();
//Feld-switch => W(rite)=new, R(ead)=old if(R==1) { W=1; R=0; } else { W=0; R=1; }
//Ausgabe for(i=1;i<(Q-1);i++) { for(j=1;j<(Q-1);j++) { if(arr[i][j][R]) cout<<"O"; else cout<<" "; } cout<<endl; }
//Neue Generation berechnen for(i=1;i<(Q-1);i++) { for(j=1;j<(Q-1);j++) { anz=nb(i,j,R); if(anz<2) arr[i][j][W]=false; if(anz==3) arr[i][j][W]=true; if(anz>3) arr[i][j][W]=false; } }
//Kurze Unterbrechung //Sleep(300); getch(); }while(!kbhit()); }
int nb(int x, int y, int r) { int anz=0; for(int i=(x-1);i<=(x+1);i++) { for(int j=(y-1);j<=(y+1);j++) { if(arr[i][j][r]) if(!(i==x && j==y)) anz++; } } return anz; }
|
|