// Read annual rainfall and plot as bar graph // This version reads years & their rainfall until end-of-file // and puts -1 in the array as a a marker // Andrew Taylor - andrewt@unsw.edu.au // 13/4/2017 /* Sample execution: % dcc plot_rainfall4.c % a.out Enter year: 2005 Enter rainfall(mm): 816 Enter year: 2006 Enter rainfall(mm): 994.0 Enter year: 2007 Enter rainfall(mm): 1499.2 Enter year: 2008 Enter rainfall(mm): 1082.6 Enter year: 2009 Enter rainfall(mm): 956.2 Enter year: 2010 Enter rainfall(mm): 1153.8 Enter year: 2011 Enter rainfall(mm): 1369.2 Enter year: 2012 Enter rainfall(mm): 1213.6 Enter year: 2013 Enter rainfall(mm): 1344.4 Enter year: 2014 Enter rainfall(mm): 893.8 1 asterisk == 100 mm of rainfall 2005 ******** 2006 ********* 2007 ************** 2008 ********** 2009 ********* 2010 *********** 2011 ************* 2012 ************ 2013 ************* 2014 ******** */ #include #define MAXIMUM_YEARS 20000 #define SCALE 100 int main(void) { int whichYear[MAXIMUM_YEARS]; double rainfall[MAXIMUM_YEARS]; int year, asterisk, nAsterisks; year = 0; while (year < MAXIMUM_YEARS) { printf("Enter year: "); if (scanf("%d", &whichYear[year]) == 0) { whichYear[year] = -1; year = MAXIMUM_YEARS; } else { printf("Enter rainfall(mm): "); scanf("%lf", &rainfall[year]); year = year + 1; } } whichYear[MAXIMUM_YEARS - 1] = -1; printf("\n1 asterisk == %d mm of rainfall\n", SCALE); year = 0; while (whichYear[year] >= 0) { printf("%4d ", whichYear[year]); nAsterisks = rainfall[year] / SCALE; asterisk = 0; while (asterisk < nAsterisks) { printf("*"); asterisk = asterisk + 1; } printf("\n"); year = year + 1; } return 0; }