// 04102008b.cpp, P H Anderson, Apr 10, '08

#include <stdio.h>
#include <string.h>

#define SUCCESS !0
#define FAILURE 0

typedef struct 
{
    int se, mi, hr;
} TM;

typedef struct
{
    int da, mo, yr;
} DT;

void get_time(TM *pt);
void print_time(TM *pt);

void add_one_day(DT *pd);
void print_date(DT *pd);

void up_case_first_letters(char s[]);
void insert_string(char s1[], char s2[], int index);
char up_case(char ch);
int string_length(char s[]);


int main()
{
    TM t;
    DT d = {30, 11, 2008};
    int n;
    char s[80];
    
    get_time(&t);
    print_time(&t);
    
    for (n=0; n<25; n++)
    {
        add_one_day(&d);
        print_date(&d);
    }
    
    while(getchar() != 'x')
    {
    }
    
    strcpy(s, "i love morgan state university");
    up_case_first_letters(s);
    printf("%s\n", s);
    
    while(getchar() != 'x')
    {
    }    
}

void get_time(TM *pt)
{
    TM t;
    printf("Enter time hh:mm:ss >");
    scanf("%i:%i:%i", &t.hr, &t.mi, &t.se);
    pt->hr = t.hr; pt->mi = t.mi; pt->se = t.se;
}

void print_time(TM *pt)
{
    printf("%02d:%02d:%02d\n", pt->hr, pt->mi, pt->se);
}

void add_one_day(DT *pd)
{                            //  J                       J   A  S    O   N   D
    int days_in_month[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
    ++(pd->da);
    if (pd->da > days_in_month[pd->mo])
    {
        pd->da = 1;
        ++pd->mo;
        if(pd->mo > 12)
        {
            pd->mo = 1;
            ++(pd->yr);
        }
    }
}

void print_date(DT *pd)
{
    printf("%02i/%02i/%04i\n", pd->mo, pd->da, pd->yr);
}

void up_case_first_letters(char s[])
{
    int length, n;
    length = string_length(s);
    
    for (n=1; n<length-1; n++)
    {
        if (s[n-1] == ' ') 
        {
           s[n] = up_case(s[n]);
        }
    }
}

void insert_string(char s1[], char s2[], int index)
{ // stub
}

char up_case(char ch)
{
    if ((ch >= 'a') && (ch <= 'z'))
    {
        ch = ch - 'a' + 'A';
    }
    return(ch);
}

int string_length(char s[])
{
    int n;
    for (n=0; n<80; n++)
    {
        if (s[n] == '\0')
        {
            return(n);
        }
    }
}