Witam, jako zadanie piszę program wizualizujący przebieg gry w życie. Podczas próby kompilacji programu napotkałem error: [Error] array bound is not an integer constant before ']' token.
Domyślam się, iż jest to problem z faktem przekazywania tablicy dwuwymiarowej do funkcji. Próbowałem zrobić to w sposób przedstawiony w kodzie - z pomocą wskaźników, jednak nadal nie działa. Co jest nie tak?
#include <iostream>
#include <string>
#include <cstdlib>
int n=20;
int k=20;
int x,y;
std::string key;
void zeroing(int tab[][n], int copytab[][n], int n){ //zerowanie tablic
for(int i=0; i<n; i++){
for(int j=0; j<n; j++){
tab[i][j]=0;
copytab[i][j]=0;
}
}
}
void setValues(int tab[][n], int copytab[][n], int x, int y, std::string key){ //wpisywanie wartości początkowych i start programu
do{
std::cout << "x: ";
std::cin >> x;
std::cout << "y: ";
std::cin >> y;
tab[x][y]=1;
copytab[x][y]=1;
std::cout << std::endl << "key: ";
std::cin >> key;
std::cout << std::endl;
}while((key!="START")&&(key!="start"));
}
void display(int tab[][n], int n){ //wyświetlanie planszy
for(int i=0; i<n; i++){
for(int j=0; j<n; j++){
std::cout << " " << tab[i][j];
}
std::cout << std::endl;
}
std::cin.get();
std::cin.ignore();
system("cls");
}
int neighbours(int copytab[][n], int i, int j){ //liczenie sąsiadów
int suma=0;
for(int i=1; i<n-1; i++){
for(int j=1; j<n-1; j++){
if(copytab[i-1][j-1]==1) suma++;
if(copytab[i-1][j]==1) suma++;
if(copytab[i-1][j+1]==1) suma++;
if(copytab[i+1][j-1]==1) suma++;
if(copytab[i+1][j]==1) suma++;
if(copytab[i+1][j+1]==1) suma++;
if(copytab[i][j+1]==1) suma++;
if(copytab[i][j-1]==1) suma++;
if(copytab[i][j]==1 && (suma==2 || suma==3)) return 1;
else return 0;
else if(copytab[i][j]==0 && suma==3) return 1;
else return 0;
}
}
}
void overwrite(int tab[][n], int copytab[][n]){ //nadpisywanie tablic
for(int i=1; i<=n; i++){
for(int j=1; j<=n; j++){
tab[i][j]=neighbours(copytab, i, j);
}
}
for(int i=0; i<n; i++){
for(int j=0; j<n; j++){
copytab[i][j]=tab[i][j];
}
}
}
int main(){
int tab[n][n];
int copytab[n][n];
zeroing(tab, copytab, n);
setValues(tab, copytab, x, y, key);
do{
overwrite(tab, copytab);
display(tab, n);
}while(k--);
return 0;
}
Dzięki za pomoc!