Code:
#include <stdio.h>
#include <time.h>
#include <sys/time.h>
#include "date.h"
#include "date2.c"
/* true for leap years */
/************************MY PROGRAM**********************/
static char myday[7][15]=
{{"Sunday"},
{"Monday"},
{"Tuesday"},
{"Wednesday"},
{"Thursday"},
{"Friday"},
{"Saturday"}
};
int first_day_of_month ( int year, int month );
char* getday(int d, int m, int y){
int current_days;
int day = first_day_of_month( y, m );
current_days = (day + d - 1) % 7;
return myday[current_days];
}
int convert (char* converted, int failure){
int name;
if (!converted || !*converted){
return failure;
}
else if (name = atoi(converted)){
return name;
}
return failure;
}
int do_day ( char *cmd ) {
int day;
int month;
int year;
int res;
char mon;
char arg0[res];
char arg1[res];
char arg2[res];
strcpy(arg0, "");
strcpy(arg1, "");
strcpy(arg2, "");
res = sscanf( cmd, "%*c %s %s %s", arg0, arg1, arg2 );
if (res == 0){
day = current_dayy();
mon = current_monthh();
year = current_yearr();
switch(mon){
case 1:
printf("%d January %d is a %s \n", day, year, getday(day, mon, year));
week_day(day, mon, year);
break;
case 2:
printf("%d February %d is a %s \n", day, year, getday(day, mon, year));
week_day(day, mon, year);
break;
case 3:
printf("%d March %d is a %s \n", day, year, getday(day, mon, year));
week_day(day, mon, year);
break;
case 4:
printf("%d April %d is a %s \n", day, year, getday(day, mon, year));
week_day(day, mon, year);
break;
case 5:
printf("%d May %d is a %s \n", day, year, getday(day, mon, year));
week_day(day, mon, year);
break;
case 6:
printf("%d June %d is a %s \n", day, year, getday(day, mon, year));
week_day(day, mon, year);
break;
case 7:
printf("%d July %d is a %s \n", day, year, getday(day, mon, year));
week_day(day, mon, year);
break;
case 8:
printf("%d August %d is a %s \n", day, year, getday(day, mon, year));
week_day(day, mon, year);
break;
case 9:
printf("%d September %d is a %s \n", day, year, getday(day, mon, year));
week_day(day, mon, year);
break;
case 10:
printf("%d October %d is a %s \n", day, year, getday(day, mon, year));
week_day(day, mon, year);
break;
case 11:
printf("%d November %d is a %s \n", day, year, getday(day, mon, year));
week_day(day, mon, year);
break;
case 12:
printf("%d December %d is a %s \n", day, year, getday(day, mon, year));
week_day(day, mon, year);
break;
default:
printf("Invalid Month");
}
/*printf("%d %d \n", day, year); */
return 0;
}
if (res == 1){
mon = current_monthh();
year = current_yearr();
switch(mon){
case 1:
printf("%d January %d is a %s \n", day, year, getday(day, mon, year));
week_day(day, mon, year);
break;
case 2:
printf("%d February %d is a %s \n", day, year, getday(day, mon, year));
week_day(day, mon, year);
break;
case 3:
printf("%d March %d is a %s \n", day, year, getday(day, mon, year));
week_day(day, mon, year);
break;
case 4:
printf("%d April %d is a %s \n", day, year, getday(day, mon, year));
week_day(day, mon, year);
break;
case 5:
printf("%d May %d is a %s \n", day, year, getday(day, mon, year));
week_day(day, mon, year);
break;
case 6:
printf("%d June %d is a %s \n", day, year, getday(day, mon, year));
week_day(day, mon, year);
break;
case 7:
printf("%d July %d is a %s \n", day, year, getday(day, mon, year));
week_day(day, mon, year);
break;
case 8:
printf("%d August %d is a %s \n", day, year, getday(day, mon, year));
week_day(day, mon, year);
break;
case 9:
printf("%d September %d is a %s \n", day, year, getday(day, mon, year));
week_day(day, mon, year);
break;
case 10:
printf("%d October %d is a %s \n", day, year, getday(day, mon, year));
week_day(day, mon, year);
break;
case 11:
printf("%d November %d is a %s \n", day, year, getday(day, mon, year));
week_day(day, mon, year);
break;
case 12:
printf("%d December %d is a %s \n", day, year, getday(day, mon, year));
week_day(day, mon, year);
break;
default:
printf("Invalid Month");
}
/*printf("%d %d \n", day, year); */
return 0;
}
if (res == 2){
year = current_yearr();
switch(month){
case 1:
printf("%d January %d is a %s \n", day, year, getday(day, month, year));
week_day(day, month, year);
break;
case 2:
printf("%d February %d is a %s \n", day, year, getday(day, month, year));
week_day(day, month, year);
break;
case 3:
printf("%d March %d is a %s \n", day, year, getday(day, month, year));
week_day(day, month, year);
break;
case 4:
printf("%d April %d is a %s \n", day, year, getday(day, month, year));
week_day(day, month, year);
break;
case 5:
printf("%d May %d is a %s \n", day, year, getday(day, month, year));
week_day(day, month, year);
break;
case 6:
printf("%d June %d is a %s \n", day, year, getday(day, month, year));
week_day(day, month, year);
break;
case 7:
printf("%d July %d is a %s \n", day, year, getday(day, month, year));
week_day(day, month, year);
break;
case 8:
printf("%d August %d is a %s \n", day, year, getday(day, month, year));
week_day(day, month, year);
break;
case 9:
printf("%d September %d is a %s \n", day, year, getday(day, month, year));
week_day(day, month, year);
break;
case 10:
printf("%d October %d is a %s \n", day, year, getday(day, month, year));
week_day(day, month, year);
break;
case 11:
printf("%d November %d is a %s \n", day, year, getday(day, month, year));
week_day(day, month, year);
break;
case 12:
printf("%d December %d is a %s \n", day, year, getday(day, month, year));
week_day(day, month, year);
break;
default:
printf("Invalid Month");
}
/*printf("%d %d \n", day, year); */
return 0;
}
if ( res == 3 ) {
switch(month){
case 1:
printf("%d January %d is a %s \n", day, year, getday(day,month,year));
week_day(day, month, year);
break;
case 2:
printf("%d February %d is a %s \n", day, year, getday(day,month,year));
week_day(day, month, year);
break;
case 3:
printf("%d March %d is a %s \n", day, year, getday(day,month,year));
week_day(day, month, year);
break;
case 4:
printf("%d April %d is a %s \n", day, year, getday(day,month,year));
week_day(day, month, year);
break;
case 5:
printf("%d May %d is a %s \n", day, year, getday(day,month,year)); week_day(day, month, year);
break;
case 6:
printf("%d June %d is a %s \n", day, year, getday(day,month,year));
week_day(day, month, year);
break;
case 7:
printf("%d July %d is a %s \n", day, year, getday(day,month,year));
week_day(day, month, year);
break;
case 8:
printf("%d August %d is a %s \n", day, year, getday(day,month,year));
week_day(day, month, year);
break;
case 9:
printf("%d September %d is a %s \n", day, year, getday(day,month,year)); week_day(day, month, year);
break;
case 10:
printf("%d October %d is a %s \n", day, year, getday(day,month,year));
week_day(day, month, year);
break;
case 11:
printf("%d November %d is a %s \n", day, year, getday(day,month,year));
week_day(day, month, year);
break;
case 12:
printf("%d December %d is a %s \n", day, year, getday(day,month,year));
week_day(day, month, year);
break;
default :
printf("Invalid month\n");
return 0;
}
}
else{
printf( "Bad day command parameters\n" );
return 1;
}
}
int do_month ( char *cmd ) {
int month, year;
int res;
res = sscanf( cmd, "%*c %d %d", &month, &year );
if ( res == 2 ) {
switch(month){
case 1:
printf("January\n");
break;
case 2:
printf("February\n");
break;
case 3:
printf("March\n");
break;
case 4:
printf("April\n");
break;
case 5:
printf("May\n");
break;
case 6:
printf("June\n");
break;
case 7:
printf("July\n");
break;
case 8:
printf("August\n");
break;
case 9:
printf("September\n");
break;
case 10:
printf("October\n");
break;
case 11:
printf("November ");
break;
case 12:
printf("December\n");
break;
default :
printf("Invalid month\n");
return 0;
}
}
else {
printf( "Bad month command parameters\n" );
}
return 1;
}
void do_year ( char *cmd ) {
int year;
int res;
res = sscanf( cmd, "%*c %d", &year );
if ( res == 1 ) {
printf("%d \n", year);
}
else {
printf( "Bad year command parameters\n" );
}
}
int first_day_of_month ( int year, int month ) {
struct tm t = { 0 };
struct tm *tp;
time_t now;
t.tm_mday = 1;
t.tm_mon = month-1;
t.tm_year = year-1900;
now = mktime(&t);
tp = localtime(&now);
return tp->tm_wday;
}
int main ( ) {
char buff[BUFSIZ];
while ( fgets( buff, BUFSIZ, stdin )) {
if (strlen(buff) <= 1) {
break;
}
switch ( buff[0] ) {
case 'd':
do_day ( buff );
break;
case 'm':
do_month ( buff );
return 0;
break;
case 'y':
do_year ( buff );
return 0;
break;
default:
printf( "Unknown command: %c\n", buff[0] );
return 0;
break;
}
}
return 0;
}