Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- int values(int *pop, double *rate);
- void reportgen(int pop, double rate);
- int main()
- {
- int initial_pop;
- double infect_rate;
- printf("Zombie Infection Model\n");
- values(&initial_pop, &infect_rate);
- reportgen(initial_pop, infect_rate);
- printf("Report generated!\n");
- return 0;
- }
- /* values - user enters population greater than 0 and rate between 0 and 1 */
- int values(int *pop, double *rate)
- {
- int p;
- double r;
- while(1)
- {
- printf("Please enter initial population:");
- scanf("%d", &p);
- if (p >= 0)
- {
- while(1)
- {
- *pop = p;
- printf("Please enter infection rate as a decimal (e.g. 25% = 0.25):");
- scanf("%lf", &r);
- if (r > 0.0 && r < 1.0)
- {
- *rate = r;
- return(0);
- }
- else
- printf("Infection rate must be between 0 and 1 inclusive. Try again.\n");
- }
- }
- else
- {
- printf("Population must be non-negative. Try again.\n");
- }
- }
- }
- void reportgen(int pop, double rate)
- {
- FILE* out_file;
- out_file = fopen("modelOutput.txt", "w");
- int time = 1;
- int infected_pop = 1.0;
- int surviving_pop = pop;
- double delta = 0;
- int deltafinal = 0;
- fprintf(out_file, " Time Humans Zombies\n");
- while (deltafinal < surviving_pop)
- {
- surviving_pop = (surviving_pop-deltafinal);
- infected_pop = (infected_pop+deltafinal);
- delta = (rate*surviving_pop*infected_pop);
- deltafinal = delta;
- fprintf(out_file, "%5d\t%12d\t%12d\n", time, surviving_pop, infected_pop);
- time=(time+1);
- }
- surviving_pop = 0;
- infected_pop = (pop + 1);
- fprintf(out_file, "%5d\t%12d\t%12d\n", time, surviving_pop, infected_pop);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement