1 / 1

caron
Download Presentation

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. // Ancient Population v1 // It follows latest GPL // Made by James Leigh, crinje@gnu.com // ancient.population [birth number] [unproductive number] [survival number] // - birth: sets the interval of births (5 means one son and one daughter were born in every five years) // - unproductive: sets the unproductive years. (50 means they did not give birth for the last 50 years in their lives) // - survival: sets the survival rates. 6 means 6 out of 10 new born babies survived. survival rate = 100 - mortality rate. #include <stdio.h> #include <string.h> int gen_calc(unsigned short int birth_interval, float survival_rate, unsigned short int unproductive_years); int init_table(void); int export2csv(unsigned short int birth_interval, float survival_rate, unsigned short int unproductive_years); unsigned long long int gen[16][1657]; unsigned short int g7_end; const int g1_start = 0, g1_end = 930, g2_start = 130, g2_end = 1042; const int g3_start = 235, g3_end = 1140, g4_start = 325, g4_end = 1235; const int g5_start = 395, g5_end = 1290, g6_start = 460, g6_end = 1422; const int g7_start = 622, g8_start = 687, g8_end = 1656; const int g9_start = 874, g9_end = 1651; const int g10_start = 1056, g11_start = 1173, g12_start = 1290, g13_start = 1407, g14_start = 1524, g15_start = 1641; const int flood = 1656, enoch = 987; int main(int argc, char *argv[]) { int temp, year; float survival_rate = 50; unsigned short int birth_interval = 10; unsigned short int unproductive_years = 50; printf("Calculating the ancient polulation before the great flood.\n\n"); if (argc != 1 && argc != 3 && argc != 5 && argc != 7) { printf("Wrong commandline arguement number.\nExiting programme.\n"); return 1; } if (argc == 1) { printf("No value input. Using default values...\n\n"); } else for (temp = argc - 2; temp >= 1; temp = temp - 2) { if ((strncmp(argv[temp], "birth", strlen(argv[temp]))) == 0) { printf("Taking birth interval value...\n"); birth_interval = atoi(argv[temp + 1]); } else if ((strncmp(argv[temp], "unproductive", strlen(argv[temp]))) == 0) { printf("Taking unproductive years value...\n"); unproductive_years = atoi(argv[temp + 1]); } else if ((strncmp(argv[temp], "survival", strlen(argv[temp]))) == 0) { printf("Taking survival rate value...\n"); survival_rate = atoi(argv[temp + 1]); } else { printf("Commandline arguement is not correct.\nExiting programme\n"); return 1; } } printf("\tAssumes that %d%c of new born babies survived.\n", (int)survival_rate, '%'); printf("\tAssumes that the parents gave birth to two kids in every %d years.\n", birth_interval); printf("\tAssumes that the last %d years in life, they did not produce any offspring.\n\n", unproductive_years); survival_rate = survival_rate / 100; g7_end = g7_start + 912 + birth_interval; printf("Initialising the generation table..."); init_table(); printf(" Done\n\n"); //Call special condition function gen_calc(birth_interval, survival_rate, unproductive_years); export2csv(birth_interval, survival_rate, unproductive_years); } int gen_calc(unsigned short int birth_interval, float survival_rate, unsigned short int unproductive_years) { unsigned int year, temp_mod, temp_year; printf("Calculating the population of 1st generation...\n"); printf("\tYear %d: Adam created...\n", g1_start); for (year = g1_start; year <= g1_end; year++) gen[1][year] = 2; printf("\tYear %d: Adam died...\n", g1_end); printf("Done.\n\n"); printf("Calculating the population of 2nd generation...\n"); printf("\tYear %d: Adam gave birth to Seth...\n", g2_start); for (year = g2_start, temp_mod = year - birth_interval; year <= (g1_end - unproductive_years); year++) if (((year - temp_mod) % birth_interval) == 0) gen[2][year] = gen[2][year - 1] + gen[1][year]; else gen[2][year] = gen[2][year -1]; printf("\tYear %d: Adam stopped produing...\n", g1_end - unproductive_years); for (year = g1_end - unproductive_years + 1; year <= (g2_end - 1); year++) gen[2][year] = gen[2][year-1]; printf("\tYear %d: Seth died...\n", g2_end); for (year = g2_end, temp_mod = year - birth_interval; year <= flood; year++) if (((year - temp_mod) % birth_interval) == 0) gen[2][year] = gen[2][year - 1] - gen[2][year - (g2_end - g2_start)] + gen[2][year - (g2_end - g2_start) - birth_interval]; else gen[2][year] = gen[2][year - 1]; printf("Done.\n\n"); printf("Calculating the population of 3rd generation...\n"); printf("\tYear %d: Seth gave birth to Enos...\n", g3_start); for (year = g3_start, temp_mod = year - birth_interval; year <= (g2_end - unproductive_years); year++) if (((year - temp_mod) % birth_interval) == 0) gen[3][year] = gen[3][year - 1] + gen[2][year - (g3_start - g2_start)] * survival_rate; else gen[3][year] = gen[3][year - 1]; printf("\tYear %d: Adam's last son began producing...\n", g1_end - unproductive_years + g3_start - g2_start); printf("\tYear %d: Seth stopped producing...\n", g2_end - unproductive_years); for (year = g2_end - unproductive_years + 1, temp_mod = year - birth_interval, temp_year = year - g2_start; year <= g2_end - 1; year++) if (((year - temp_mod) % birth_interval) == 0) gen[3][year] = gen[3][year - 1] + (gen[2][year - (g3_start - g2_start)] - gen[2][year - temp_year]) * survival_rate; else gen[3][year] = gen[3][year - 1]; for (year = g2_end, temp_mod = year - birth_interval; year <= g3_end - 1; year++) if (((year - temp_mod) % birth_interval) == 0) gen[3][year] = gen[3][year - 1] + (gen[2][year - (g3_start - g2_start)] - gen[2][year - temp_year] + gen[2][year - (g2_end - g2_start)]) * survival_rate; else gen[3][year] = gen[3][year - 1]; printf("\tYear 1140: Enos died...\n"); for (year = g3_end, temp_mod = year - birth_interval; year <= flood; year++) if (((year - temp_mod) % birth_interval) == 0) gen[3][year] = gen[3][year - 1] + (gen[2][year - (g3_start - g2_start)] - gen[2][year - temp_year] + gen[2][year - (g2_end - g2_start)]) * survival_rate - (gen[3][year - (g3_end - g3_start)] - gen[3][year - (g3_end - g3_start) - birth_interval]); else gen[3][year] = gen[3][year - 1]; printf("Done.\n\n"); printf("Calculating the population of 4th generation...\n"); printf("\tYear %d: Enos gave birth to Cainan...\n", g4_start); for (year = g4_start, temp_mod = year - birth_interval; year <= (g3_end - unproductive_years); year++) if (((year - temp_mod) % birth_interval) == 0) gen[4][year] = gen[4][year - 1] + gen[3][year - (g4_start - g3_start)] * survival_rate; else gen[4][year] = gen[4][year - 1]; printf("\tYear %d: Enos stopped producing...\n", g3_end - unproductive_years); for (year = g3_end - unproductive_years + 1, temp_mod = year - birth_interval, temp_year = year - g3_start; year <= g3_end - 1; year++) if (((year - temp_mod) % birth_interval) == 0) gen[4][year] = gen[4][year - 1] + (gen[3][year - (g4_start - g3_start)] - gen[3][year - temp_year]) * survival_rate; else gen[4][year] = gen[4][year - 1]; for (year = g3_end, temp_mod = year - birth_interval; year <= g4_end - 1; year++) if (((year - temp_mod) % birth_interval) == 0) gen[4][year] = gen[4][year - 1] + (gen[3][year - (g4_start - g3_start)] - gen[3][year - temp_year] + gen[3][year - (g3_end - g3_start)]) * survival_rate; else gen[4][year] = gen[4][year - 1]; printf("\tYear %d: Cainan died...\n", g4_end); for (year = g4_end, temp_mod = year - temp_mod; year <= flood; year++) if (((year - temp_mod) % birth_interval) == 0) gen[4][year] = gen[4][year - 1] + (gen[3][year - (g4_start - g3_start)] - gen[3][year - temp_year] + gen[3][year - (g3_end - g3_start)]) * survival_rate - (gen[4][year - (g3_end - g3_start)] - gen[4][year - (g3_end - g3_start) - birth_interval]); else gen[4][year] = gen[4][year - 1]; printf("Done.\n\n"); printf("Calculating the population of 5th generation...\n"); printf("\tYear %d: Cainan gave birth to Mahalaleel...\n", g5_start); for (year = g5_start, temp_mod = year - birth_interval; year <= (g4_end - unproductive_years); year++) if (((year - temp_mod) % birth_interval) == 0) gen[5][year] = gen[5][year - 1] + gen[4][year - (g5_start - g4_start)] * survival_rate; else gen[5][year] = gen[5][year - 1]; printf("\tYear %d: Cainan stopped producing...\n", g4_end - unproductive_years); for (year = g4_end - unproductive_years + 1, temp_mod = year - birth_interval, temp_year = year - g4_start; year <= g4_end - 1; year++) if (((year - temp_mod) % birth_interval) == 0) gen[5][year] = gen[5][year - 1] + (gen[4][year - (g5_start - g4_start)] - gen[4][year - temp_year]) * survival_rate; else gen[5][year] = gen[5][year - 1]; for (year = g4_end, temp_mod = year - birth_interval; year <= g5_end - 1; year++) if (((year - temp_mod) % birth_interval) == 0) gen[5][year] = gen[5][year - 1] + (gen[4][year - (g5_start - g4_start)] - gen[4][year - temp_year] + gen[4][year - (g4_end - g4_start)]) * survival_rate; else gen[5][year] = gen[5][year - 1]; printf("\tYear %d: Mahalaleel died...\n", g5_end); for (year = g5_end, temp_mod = year - temp_mod; year <= flood; year++) if (((year - temp_mod) % birth_interval) == 0) gen[5][year] = gen[5][year - 1] + (gen[4][year - (g5_start - g4_start)] - gen[4][year - temp_year] + gen[4][year - (g4_end - g4_start)]) * survival_rate - (gen[5][year - (g4_end - g4_start)] - gen[5][year - (g4_end - g4_start) - birth_interval]); else gen[5][year] = gen[5][year - 1]; printf("Done.\n\n"); printf("Calculating the population of 6th generation...\n"); printf("\tYear %d: Mahalaleel gave birth to Jared...\n", g6_start); for (year = g6_start, temp_mod = year - birth_interval; year <= (g5_end - unproductive_years); year++) if (((year - temp_mod) % birth_interval) == 0) gen[6][year] = gen[6][year - 1] + gen[5][year - (g6_start - g5_start)] * survival_rate; else gen[6][year] = gen[6][year - 1]; printf("\tYear %d: Mahalaleel stopped producing...\n", g5_end - unproductive_years); for (year = g5_end - unproductive_years + 1, temp_mod = year - birth_interval, temp_year = year - g5_start; year <= g5_end - 1; year++) if (((year - temp_mod) % birth_interval) == 0) gen[6][year] = gen[6][year - 1] + (gen[5][year - (g6_start - g5_start)] - gen[5][year - temp_year]) * survival_rate; else gen[6][year] = gen[6][year - 1]; for (year = g5_end, temp_mod = year - birth_interval; year <= g6_end - 1; year++) if (((year - temp_mod) % birth_interval) == 0) gen[6][year] = gen[6][year - 1] + (gen[5][year - (g6_start - g5_start)] - gen[5][year - temp_year] + gen[5][year - (g5_end - g5_start)]) * survival_rate; else gen[6][year] = gen[6][year - 1]; printf("\tYear %d: Jared died...\n", g6_end); for (year = g6_end, temp_mod = year - temp_mod; year <= flood; year++) if (((year - temp_mod) % birth_interval) == 0) gen[6][year] = gen[6][year - 1] + (gen[5][year - (g6_start - g5_start)] - gen[5][year - temp_year] + gen[5][year - (g5_end - g5_start)]) * survival_rate - (gen[6][year - (g5_end - g5_start)] - gen[6][year - (g5_end - g5_start) - birth_interval]); else gen[6][year] = gen[6][year - 1]; printf("Done.\n\n"); printf("Calculating the population of 7th generation...\n"); printf("\tYear %d: Jared gave birth to Enoch...\n", g7_start); for (year = g7_start, temp_mod = year - birth_interval; year <= (g6_end - unproductive_years); year++) { if (((year - temp_mod) % birth_interval) == 0) gen[7][year] = gen[7][year - 1] + gen[6][year - (g7_start - g6_start)] * survival_rate; else gen[7][year] = gen[7][year - 1]; if (year == enoch) { gen[7][year] = gen[7][year] - 2; printf("\tYear %d: Enoch was taken up to Heaven...\n", enoch); } } printf("\tYear %d: Jared stopped producing...\n", g6_end - unproductive_years); for (year = g6_end - unproductive_years + 1, temp_mod = year - birth_interval, temp_year = year - g6_start; year <= g6_end - 1; year++) if (((year - temp_mod) % birth_interval) == 0) gen[7][year] = gen[7][year - 1] + (gen[6][year - (g7_start - g6_start)] - gen[6][year - temp_year]) * survival_rate; else gen[7][year] = gen[7][year - 1]; for (year = g6_end, temp_mod = year - birth_interval; year <= g7_end - 1; year++) if (((year - temp_mod) % birth_interval) == 0) gen[7][year] = gen[7][year - 1] + (gen[6][year - (g7_start - g6_start)] - gen[6][year - temp_year] + gen[6][year - (g6_end - g6_start)]) * survival_rate; else gen[7][year] = gen[7][year - 1]; printf("\tYear %d: Second son of Jared died (assumption)...\n", g7_end); for (year = g7_end, temp_mod = year - temp_mod; year <= flood; year++) if (((year - temp_mod) % birth_interval) == 0) gen[7][year] = gen[7][year - 1] + (gen[6][year - (g7_start - g6_start)] - gen[6][year - temp_year] + gen[6][year - (g6_end - g6_start)]) * survival_rate - (gen[7][year - (g6_end - g6_start)] - gen[7][year - (g6_end - g6_start) - birth_interval]); else gen[7][year] = gen[7][year - 1]; printf("Done.\n\n"); printf("Calculating the population of 8th generation...\n"); printf("\tYear %d: Enoch gave birth to Methuselah...\n", g8_start); for (year = g8_start, temp_mod = year - birth_interval; year <= (g7_end - unproductive_years); year++) if (((year - temp_mod) % birth_interval) == 0) gen[8][year] = gen[8][year - 1] + gen[7][year - (g8_start - g7_start)] * survival_rate; else gen[8][year] = gen[8][year - 1]; printf("\tYear %d: Jared's second son stopped producing(assumption)...\n", g7_end - unproductive_years); for (year = g7_end - unproductive_years + 1, temp_mod = year - birth_interval, temp_year = year - g7_start; year <= g7_end - 1; year++) if (((year - temp_mod) % birth_interval) == 0) gen[8][year] = gen[8][year - 1] + (gen[7][year - (g8_start - g7_start)] - gen[7][year - temp_year]) * survival_rate; else gen[8][year] = gen[8][year - 1]; for (year = g7_end, temp_mod = year - birth_interval; year <= g8_end - 1; year++) if (((year - temp_mod) % birth_interval) == 0) gen[8][year] = gen[8][year - 1] + (gen[7][year - (g8_start - g7_start)] - gen[7][year - temp_year] + gen[7][year - (g7_end - g7_start)]) * survival_rate; else gen[8][year] = gen[8][year - 1]; printf("Done.\n\n"); printf("Calculating the population of 9th generation...\n"); printf("\tYear %d: Methuselah gave birth to Lamech...\n", g9_start); for (year = g9_start, temp_mod = year - birth_interval; year <= (g8_end - unproductive_years); year++) if (((year - temp_mod) % birth_interval) == 0) gen[9][year] = gen[9][year - 1] + gen[8][year - (g9_start - g8_start)] * survival_rate; else gen[9][year] = gen[9][year - 1]; printf("\tYear %d: Methuselah stopped producing...\n", g8_end - unproductive_years); for (year = g8_end - unproductive_years + 1, temp_mod = year - birth_interval, temp_year = year - g8_start; year <= g8_end - 1; year++) if (((year - temp_mod) % birth_interval) == 0) gen[9][year] = gen[9][year - 1] + (gen[8][year - (g9_start - g8_start)] - gen[8][year - temp_year]) * survival_rate; else gen[9][year] = gen[9][year - 1]; for (year = g8_end, temp_mod = year - birth_interval; year <= g9_end - 1; year++) if (((year - temp_mod) % birth_interval) == 0) gen[9][year] = gen[9][year - 1] + (gen[8][year - (g9_start - g8_start)] - gen[8][year - temp_year] + gen[8][year - (g8_end - g8_start)]) * survival_rate; else gen[9][year] = gen[9][year - 1]; printf("\tYear %d: Lamech died...\n", g9_end); for (year = g9_end, temp_mod = year - temp_mod; year <= flood; year++) if (((year - temp_mod) % birth_interval) == 0) gen[9][year] = gen[9][year - 1] + (gen[8][year - (g9_start - g8_start)] - gen[8][year - temp_year] + gen[8][year - (g8_end - g8_start)]) * survival_rate - (gen[9][year - (g8_end - g8_start)] - gen[9][year - (g8_end - g8_start) - birth_interval]); else gen[9][year] = gen[9][year - 1]; printf("Done.\n\n"); printf("Calculating the population of 10th generation...\n"); printf("\tYear %d: Lamech gave birth to Noah...\n", g10_start); for (year = g10_start, temp_mod = year - birth_interval; year <= flood; year++) { if (((year - temp_mod) % birth_interval) == 0) gen[10][year] = gen[10][year - 1] + gen[9][year - (g10_start - g9_start)] * survival_rate; else gen[10][year] = gen[10][year - 1]; if (year == g10_start + 500) { gen[10][year] = gen[10][year] + 3; printf("\tYear %d: Noah gave birth to his three sons...\n", g10_start + 500); } } printf("Done.\n\n"); printf("Calculating the population of 11th generation...\n"); printf("\tYear %d: Eldest one of 11th generation gave his first birth to his kid(assumption)...\n", g11_start); for (year = g11_start, temp_mod = year - birth_interval; year <= flood; year++) if (((year - temp_mod) % birth_interval) == 0) gen[11][year] = gen[11][year - 1] + gen[10][year - (g11_start - g10_start)] * survival_rate; else gen[11][year] = gen[11][year - 1]; printf("Done.\n\n"); printf("Calculating the population of 12th generation...\n"); printf("\tYear %d: Eldest one of 12th generation gave his first birth to his kid(assumption)...\n", g12_start); for (year = g12_start, temp_mod = year - birth_interval; year <= flood; year++) if (((year - temp_mod) % birth_interval) == 0) gen[12][year] = gen[12][year - 1] + gen[11][year - (g12_start - g11_start)] * survival_rate; else gen[12][year] = gen[12][year - 1]; printf("Done.\n\n"); printf("Calculating the population of 13th generation...\n"); printf("\tYear %d: Eldest one of 13th generation gave his first birth to his kid(assumption)...\n", g13_start); for (year = g13_start, temp_mod = year - birth_interval; year <= flood; year++) if (((year - temp_mod) % birth_interval) == 0) gen[13][year] = gen[13][year - 1] + gen[12][year - (g13_start - g12_start)] * survival_rate; else gen[13][year] = gen[13][year - 1]; printf("Done.\n\n"); printf("Calculating the population of 14th generation...\n"); printf("\tYear %d: Eldest one of 14th generation gave his first birth to his kid(assumption)...\n", g14_start); for (year = g14_start, temp_mod = year - birth_interval; year <= flood; year++) if (((year - temp_mod) % birth_interval) == 0) gen[14][year] = gen[14][year - 1] + gen[13][year - (g14_start - g13_start)] * survival_rate; else gen[14][year] = gen[14][year - 1]; printf("Done.\n\n"); printf("Calculating the population of 15th generation...\n"); printf("\tYear %d: Eldest one of 15th generation gave his first birth to his kid(assumption)...\n", g15_start); for (year = g15_start, temp_mod = year - birth_interval; year <= flood; year++) if (((year - temp_mod) % birth_interval) == 0) gen[15][year] = gen[15][year - 1] + gen[14][year - (g15_start - g14_start)] * survival_rate; else gen[15][year] = gen[15][year - 1]; printf("Done.\n\n"); printf("Setting the Flood year..."); for (year = 1; year <= 15; year++) gen[year][flood] = 0; gen[10][flood] = 2; gen[11][flood] = 6; printf("Done.\n\n"); printf("Adding up the generations..."); for (year = 0; year <= flood; year++) for (temp_mod = 1; temp_mod <= 15; temp_mod++) gen[0][year] = gen[0][year] + gen[temp_mod][year]; printf("Done.\n\n"); return 0; } int init_table(void) { int temp, year; for (temp = 0; temp <= 15; temp++) for (year = 0; year <= 1656; year++) gen[temp][year] = 0; return 0; } int export2csv(unsigned short int birth_interval, float survival_rate, unsigned short int unproductive_years) { FILE *fp; unsigned short int year, temp; fp = fopen("Ancient.population.csv", "w"); fprintf(fp, "Ancient Population Calculation Result by James Leigh\n"); fprintf(fp, "Assumes that %d%c of new born babies survived.\n", (int)(survival_rate * 100), '%'); fprintf(fp, "Assumes that the parents gave birth to two kids in every %d years.\n", birth_interval); fprintf(fp, "Assumes that they did not produce any offsprings for the last %d years in life.\n\n", unproductive_years); fprintf(fp, "Year, Total"); for (temp = 1; temp <= 15; temp++) fprintf(fp, ", Gen %d", temp); fprintf(fp, "\n"); for (year = 0; year <= flood; year++) { fprintf(fp, "%d", year); for (temp = 0; temp <= 15; temp++) fprintf(fp, ", %lld", gen[temp][year]); fprintf(fp, "\n"); } fclose(fp); return 0; }

More Related