stgww
09-12-2009, 17:06
Ciao, quando compilo il programma qui sotto mi da qualche migliaio di errori. Il primo me lo da a typedef enum {true,false} boolean; dicendomi che manca } prima di constant, ma sinceramente non capisco cosaa voglia.
/*Game of Life è un gioco di dubbio gusto che mostra come un essere vive o muore
all'interno di una società. le regole sono le seguenti:
-Una cellula muore per sovraffollamento nel caso in
cui abbia un numero di cellule vicine compreso tra 4
e 8
-Una cellula muore per “desertificazione” nel caso in
cui abbia 0 o 1 cellula vicina
-Una nuova cellula nasce se ha tre cellule vicine
-Una cellula rimane nel suo stato precedente nel caso
abbia due cellule vicine */
#include <stdio.h>
#define RIGHE 10
#define COLONNE 10
enum{false,true} boolean;
struct{
int righe;
int colonne;
boolean matrice[RIGHE][COLONNE];
}scenario;
void inizializza(scenario *scen)
{
int i, j, righe, colonne;
//Creiamo la nostra matrice
do{
printf("Il massimo numero di righe disponibili sono %d \n", RIGHE);
printf("Quante righe vuoi mettere\n");
scanf("%d",&righe);
}while(righe>RIGHE);
do{
printf("Il massimo numero di colonne disponibili sono %d \n", RIGHE);
printf("Quante colonne vuoi mettere\n");
scanf("%d",&colonne);
}while(colonne>COLONNE);
//assegnamo il valore allo scenario
scen->righe = righe;
scen->colonne = colonne;
//Svuotiamo tutta la matrice
for (i=0; i<scen->righe; i++)
for (j=0; j<scen->colonne; j++)
scen->matrice[i][j] = false;
}
void visualizza(scenario scen){
int i, j;
for(i=0;i<=scen.righe;i++)
{
for(j=0;j<=scen.colonne*4;j++)
printf("-");
printf("\n|");
for(j=0;j<scen.colonne;j++)
{
if (scen.matrice[i][j] == true)
printf(" * |");
else
printf (" |");
}
printf("\n");
}
for (j=0; j<=scen.colonne*4;j++)
printf("-");
printf("\n");
}
int contaVicini(scenario s, int riga, int colonna){
int i,j;
int viciniContati=0;
for (i=riga-1; i<=riga+1; i++)
for (j=colonna-1; j<=colonna+1; j++)
if ( (i>=0) && (j>=0) && (i<s.righe) && (j<s.colonne) )
if (s.matrice[i][j]==true)
viciniContati++;
if (s.matrice[riga][colonna]==true)
viciniContati--;
return viciniContati;
}
void aggiorna(scenario *scen)
{
int i;j;
scenario temp;
int vicini;
for(i=0;i<scen->righe;i++)
for (j=0; j<scen->colonne; j++){
vicini = contaVicini(*scen,i,j);
if(vicini > 3 || vicini <2)
temp.matrice[i][j]=false;
else if (vicini == 3)
temp.matrice[i][j]=true;
else
temp.matrice[i][j]=scen->matrice[i][j];
}
for (i=0; i<scen->righe; i++)
for (j=0; j<scen->colonne; j++)
scen->matrice[i][j]=temp.matrice[i][j];
}
void main()
{
int vite_iniziali;
char scelta;
scenario mio_scenario;
boolean continua=true;
inizializza(&mio_scenario);
printf("Ibserisci numero vidte iniziali\n\n");
scanf("%d",&vite_iniziali);
assegnaViteIniziali(&mio_scenario,vite_iniziali);
while(continua==true)
{
visualizza(mio_scenario);
aggiorna(&mio_scenario);
printf("Vuoi continuare?\n");
scanf("%c", &scelta);
if(scelta=='n')
continua=false;
}
getchar();
getchar();
}
Se qualcuno a voglia di aiutarmi, grazie!
/*Game of Life è un gioco di dubbio gusto che mostra come un essere vive o muore
all'interno di una società. le regole sono le seguenti:
-Una cellula muore per sovraffollamento nel caso in
cui abbia un numero di cellule vicine compreso tra 4
e 8
-Una cellula muore per “desertificazione” nel caso in
cui abbia 0 o 1 cellula vicina
-Una nuova cellula nasce se ha tre cellule vicine
-Una cellula rimane nel suo stato precedente nel caso
abbia due cellule vicine */
#include <stdio.h>
#define RIGHE 10
#define COLONNE 10
enum{false,true} boolean;
struct{
int righe;
int colonne;
boolean matrice[RIGHE][COLONNE];
}scenario;
void inizializza(scenario *scen)
{
int i, j, righe, colonne;
//Creiamo la nostra matrice
do{
printf("Il massimo numero di righe disponibili sono %d \n", RIGHE);
printf("Quante righe vuoi mettere\n");
scanf("%d",&righe);
}while(righe>RIGHE);
do{
printf("Il massimo numero di colonne disponibili sono %d \n", RIGHE);
printf("Quante colonne vuoi mettere\n");
scanf("%d",&colonne);
}while(colonne>COLONNE);
//assegnamo il valore allo scenario
scen->righe = righe;
scen->colonne = colonne;
//Svuotiamo tutta la matrice
for (i=0; i<scen->righe; i++)
for (j=0; j<scen->colonne; j++)
scen->matrice[i][j] = false;
}
void visualizza(scenario scen){
int i, j;
for(i=0;i<=scen.righe;i++)
{
for(j=0;j<=scen.colonne*4;j++)
printf("-");
printf("\n|");
for(j=0;j<scen.colonne;j++)
{
if (scen.matrice[i][j] == true)
printf(" * |");
else
printf (" |");
}
printf("\n");
}
for (j=0; j<=scen.colonne*4;j++)
printf("-");
printf("\n");
}
int contaVicini(scenario s, int riga, int colonna){
int i,j;
int viciniContati=0;
for (i=riga-1; i<=riga+1; i++)
for (j=colonna-1; j<=colonna+1; j++)
if ( (i>=0) && (j>=0) && (i<s.righe) && (j<s.colonne) )
if (s.matrice[i][j]==true)
viciniContati++;
if (s.matrice[riga][colonna]==true)
viciniContati--;
return viciniContati;
}
void aggiorna(scenario *scen)
{
int i;j;
scenario temp;
int vicini;
for(i=0;i<scen->righe;i++)
for (j=0; j<scen->colonne; j++){
vicini = contaVicini(*scen,i,j);
if(vicini > 3 || vicini <2)
temp.matrice[i][j]=false;
else if (vicini == 3)
temp.matrice[i][j]=true;
else
temp.matrice[i][j]=scen->matrice[i][j];
}
for (i=0; i<scen->righe; i++)
for (j=0; j<scen->colonne; j++)
scen->matrice[i][j]=temp.matrice[i][j];
}
void main()
{
int vite_iniziali;
char scelta;
scenario mio_scenario;
boolean continua=true;
inizializza(&mio_scenario);
printf("Ibserisci numero vidte iniziali\n\n");
scanf("%d",&vite_iniziali);
assegnaViteIniziali(&mio_scenario,vite_iniziali);
while(continua==true)
{
visualizza(mio_scenario);
aggiorna(&mio_scenario);
printf("Vuoi continuare?\n");
scanf("%c", &scelta);
if(scelta=='n')
continua=false;
}
getchar();
getchar();
}
Se qualcuno a voglia di aiutarmi, grazie!