Pastie now auto-senses if line-wrap is a bad or good idea. Feedback?
## mark a section (Learn more)
/* getDaysYearsBad belongs to Microsoft... subject to their EULA, blah, blah, blah. Fixes by grepMonster - do with it what you will. */ #include <stdio.h> #define true 1 #define false 0 typedef int bool; typedef struct daysYears { int days; int years; } daysYears; daysYears* getDaysYears(daysYears* dy) { int daysInYear = isLeapYear(dy->years) ? 366 : 365; //base case if (dy->days <= daysInYear) { return dy; } else { //recursive case dy->days -= daysInYear; dy->years++; return getDaysYears(dy); } } daysYears* getDaysYearsBad(daysYears* dy) { while (dy->days > 365) { if (isLeapYear(dy->years)) { if (dy->days > 366) { dy->days -= 366; dy->years += 1; } } else { dy->days -= 365; dy->years += 1; } } //end of function } bool isLeapYear(int year) { if (year % 400 ==0) { return true; } else if (year % 100 == 0) { return false; } else if (year % 4 == 0) { return true; } else { return false; } } int main(int argc, char* argv[]) { if (argc != 3) { fprintf(stderr, "syntax \"days_years <g|b> <days>\"\n"); return 1; } char goodBad = *argv[1]; int days = atoi(argv[2]); const int ORIGIN_YEAR = 1980; daysYears dy; dy.days = days; dy.years = ORIGIN_YEAR; if (goodBad == 'g') { getDaysYears(&dy); } else if (goodBad == 'b') { getDaysYearsBad(&dy); } else { fprintf(stderr, "syntax \"days_years <g|b> <days>\"\n"); return 1; } printf("years: %d, days: %d\n", dy.years, dy.days); return 0; }
This paste will be private.
From the Design Piracy series on my blog: