Advertisement
Guest User

MP4

a guest
Feb 20th, 2017
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.95 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int values(int *pop, double *rate);
  5. void reportgen(int pop, double rate);
  6.  
  7. int main()
  8. {
  9. int initial_pop;
  10. double infect_rate;
  11.  
  12. printf("Zombie Infection Model\n");
  13. values(&initial_pop, &infect_rate);
  14. reportgen(initial_pop, infect_rate);
  15. printf("Report generated!\n");
  16. return 0;
  17. }
  18. /* values - user enters population greater than 0 and rate between 0 and 1 */
  19. int values(int *pop, double *rate)
  20. {
  21. int p;
  22. double r;
  23.  
  24. while(1)
  25. {
  26. printf("Please enter initial population:");
  27. scanf("%d", &p);
  28. if (p >= 0)
  29. {
  30. while(1)
  31. {
  32. *pop = p;
  33. printf("Please enter infection rate as a decimal (e.g. 25% = 0.25):");
  34. scanf("%lf", &r);
  35. if (r > 0.0 && r < 1.0)
  36. {
  37. *rate = r;
  38. return(0);
  39. }
  40. else
  41. printf("Infection rate must be between 0 and 1 inclusive. Try again.\n");
  42. }
  43. }
  44. else
  45. {
  46. printf("Population must be non-negative. Try again.\n");
  47. }
  48. }
  49. }
  50. void reportgen(int pop, double rate)
  51. {
  52. FILE* out_file;
  53. out_file = fopen("modelOutput.txt", "w");
  54. int time = 1;
  55. int infected_pop = 1.0;
  56. int surviving_pop = pop;
  57. double delta = 0;
  58. int deltafinal = 0;
  59. fprintf(out_file, " Time Humans Zombies\n");
  60. while (deltafinal < surviving_pop)
  61. {
  62. surviving_pop = (surviving_pop-deltafinal);
  63. infected_pop = (infected_pop+deltafinal);
  64. delta = (rate*surviving_pop*infected_pop);
  65. deltafinal = delta;
  66. fprintf(out_file, "%5d\t%12d\t%12d\n", time, surviving_pop, infected_pop);
  67. time=(time+1);
  68. }
  69. surviving_pop = 0;
  70. infected_pop = (pop + 1);
  71. fprintf(out_file, "%5d\t%12d\t%12d\n", time, surviving_pop, infected_pop);
  72. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement