/* Fire example code - step 1 * no modifcations yet made */ #include #include #define UNBURNT 0 #define SMOLDERING 1 #define BURNING 2 #define BURNT 3 #define true 1 #define false 0 typedef int boolean; extern void seed_by_time(int); extern int ** allocate_forest(int); extern void initialize_forest(int, int **); extern double get_percent_burned(int, int **); extern void delete_forest(int, int **); extern void light_tree(int, int **,int,int); extern boolean forest_is_burning(int, int **); extern void forest_burns(int, int **,double); extern void print_forest(int, int **); int main() { // initial conditions and variable definitions int forest_size=20; double prob_spread=0.5; int **forest; int i; double percent_burned=0.0; // setup problem seed_by_time(0); forest=allocate_forest(forest_size); initialize_forest(forest_size,forest); light_tree(forest_size,forest,10,10); // burn until fire is gone while(forest_is_burning(forest_size,forest)) { forest_burns(forest_size,forest,prob_spread); } percent_burned=get_percent_burned(forest_size,forest); // print output and clean up print_forest(forest_size,forest); printf("Percent burned = %lf\n",percent_burned); delete_forest(forest_size,forest); } void seed_by_time(int offset) { time_t the_time; time(&the_time); srand((int)the_time+offset); } double get_percent_burned(int forest_size,int ** forest) { int i,j; int total = forest_size*forest_size-1; int sum=0; // calculate pecrent burned sum=0; for (i=0;i