tyooo
tyooo

Reputation: 93

Calendar In C Programming Language Assignment

Have been working on this assignment for 20+ hours and I understand people for some reason never want to help with homework assignments but I literally am not getting anywhere and figured I would at least TRY and ask for help because I have tried on multiple forums to no avail. My code is as follows...

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int getdaycode(int month,  int year);
void printheader(int month, int year);
int getndim(int month, int year);

int main()
{
	int  day, month, year, nummonths;
	{
		printf("Enter Month, Year, and Number of Months");
		scanf("%d %d %d", &month, &year, &nummonths);
		
		for (nummonths; nummonths < 13; nummonths++)
			if (nummonths > 13)
				year = year + 1;

		printheader(month, year);
		int numdays = getndim(month, year);
		int daycode = getdaycode(month,  year);
		
		for (day = 1; day <= 1 + daycode * 4; day++)
			printf(" ");
		
		for (day = 1; day <= numdays; day++) 
		
		{
			printf("%2d", day);
			if ((day + daycode) % 7 > 0)

				printf("   ");
			else
				printf("\n");
		}
		daycode = (daycode + numdays) % 7;
	}
}


int getdaycode(int month, int year)
{
	int numdays;
	{
		numdays = ((year - 1) * 365 + ((year - 1) / 4) - ((year - 1) / 100) + ((year - 1) / 400)); // how many days including exceptions

		if (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0))		//check if leapyear
		{
			if (month == 1)							// January 
				numdays = numdays;
			if (month == 2)							// February 
				numdays = numdays + 31;
			if (month == 3)							// March 
				numdays = numdays + 28 + 31 + 1;
			if (month == 4)							// April 
				numdays = numdays + 31 + 28 + 31 + 1;
			if (month == 5)							// May 
				numdays = numdays + 30 + 31 + 28 + 31 + 1;
			if (month == 6)							// June 
				numdays = numdays + 31 + 30 + 31 + 28 + 31 + 1;
			if (month == 7)							// July 
				numdays = numdays + 30 + 31 + 30 + 31 + 28 + 31 + 1;
			if (month == 8)							// August 
				numdays = numdays + 31 + 30 + 31 + 30 + 31 + 28 + 31 + 1;
			if (month == 9)							// September 
				numdays = numdays + 31 + 31 + 30 + 31 + 30 + 31 + 28 + 31 + 1;
			if (month == 10)							// October						
				numdays = numdays + 30 + 31 + 31 + 30 + 31 + 30 + 31 + 28 + 31 + 1;
			if (month == 11)							// November
				numdays = numdays + 31 + 30 + 31 + 31 + 30 + 31 + 30 + 31 + 28 + 31 + 1;
			if (month == 12)							// December
				numdays = numdays + 30 + 31 + 30 + 31 + 31 + 30 + 31 + 30 + 31 + 28 + 31 + 1;
		}
		else
		{
			if (month == 1)							// January 
				numdays = numdays;
			if (month == 2)							// February 
				numdays = numdays + 31;
			if (month == 3)							// March 
				numdays = numdays + 28 + 31;
			if (month == 4)							// April 
				numdays = numdays + 31 + 28 + 31;
			if (month == 5)							// May 
				numdays = numdays + 30 + 31 + 28 + 31;
			if (month == 6)							// June 
				numdays = numdays + 31 + 30 + 31 + 28 + 31;
			if (month == 7)							// July 
				numdays = numdays + 30 + 31 + 30 + 31 + 28 + 31;
			if (month == 8)							// August 
				numdays = numdays + 31 + 30 + 31 + 30 + 31 + 28 + 31;
			if (month == 9)							// September 
				numdays = numdays + 31 + 31 + 30 + 31 + 30 + 31 + 28 + 31;
			if (month == 10)							// October						
				numdays = numdays + 30 + 31 + 31 + 30 + 31 + 30 + 31 + 28 + 31;
			if (month == 11)							// November
				numdays = numdays + 31 + 30 + 31 + 31 + 30 + 31 + 30 + 31 + 28 + 31;
			if (month == 12)							// December
				numdays = numdays + 30 + 31 + 30 + 31 + 31 + 30 + 31 + 30 + 31 + 28 + 31;
		}

		int daycode = numdays % 7;
		switch (daycode)
		{
		case 0:
			printf("Sunday\n");
			break;

		case 1:
			printf("Monday\n");
			break;

		case 2:
			printf("Tuesday\n");
			break;

		case 3:
			printf("Wednesday\n");
			break;

		case 4:
			printf("Thursday\n");
			break;

		case 5:
			printf("Friday\n");
			break;

		case 6:
			printf("Saturday\n");
			break;

		default: printf("unexpected error (daycode case) daycode = %d", daycode);
			break;
		}
		return daycode;
	}
}

void printheader(int month, int year)
	{
			printf("%14d %1d\n", month, year);
			printf("Sun ");
			printf("Mon ");
			printf("Tue ");
			printf("Wed ");
			printf("Thu ");
			printf("Fri ");
			printf("Sat\n");
		}

int getndim(int month, int year)
{
	int numdays;
	if (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0))		//check if leapyear
	{
		if (month == 1)							// January 
			numdays = 31;
		if (month == 2)							// February 
			numdays = 29;
		if (month == 3)							// March 
			numdays = 31;
		if (month == 4)							// April 
			numdays = 30;
		if (month == 5)							// May 
			numdays = 31;
		if (month == 6)							// June 
			numdays = 30;
		if (month == 7)							// July 
			numdays = 31;
		if (month == 8)							// August 
			numdays = 31;
		if (month == 9)							// September 
			numdays = 30;
		if (month == 10)							// October						
			numdays = 31;
		if (month == 11)							// November
			numdays = 30;
		if (month == 12)							// December
			numdays = 31;
	}
	else
	{
		if (month == 1)							// January 
			numdays = 31;
		if (month == 2)							// February 
			numdays = 28;
		if (month == 3)							// March 
			numdays = 31;
		if (month == 4)							// April 
			numdays = 30;
		if (month == 5)							// May 
			numdays = 31;
		if (month == 6)							// June 
			numdays = 30;
		if (month == 7)							// July 
			numdays = 31;
		if (month == 8)							// August 
			numdays = 31;
		if (month == 9)							// September 
			numdays = 30;
		if (month == 10)							// October						
			numdays = 31;
		if (month == 11)							// November
			numdays = 30;
		if (month == 12)							// December
			numdays = 31;
	}
	return numdays;
}

enter image description here

What I am wondering is how to call my getdaycode function correctly into my main function. Also, when that isn't the problem, the day keeps showing up below my header and it messes with the ordering of the days messing up the calendar. Those are my two biggest problems at this point, I really would enjoy working through this with someone... Really confused.. and before you say look back at your material.. I am brand new at programming with no background, as well as this course didn't come with any sources such as books or sites to reference. (This makes it EXTREMELY difficult). Any help Greatly Appreciated!

Upvotes: 0

Views: 1870

Answers (3)

kuldeep kumar joshi
kuldeep kumar joshi

Reputation: 116

int getndim(int month, int year)
{
int numdays;            
        //---whatever your code is
    if(check condition)     
    {
        if (month == 2)                         
            numdays = 29;   
    }
    return numdays;
}

Upvotes: 1

kuldeep kumar joshi
kuldeep kumar joshi

Reputation: 116

int getdaycode(int month, int day, int year)
{
    int numdays;
    numdays = (whatever it is); // how many days including exceptions
            if (month == 1)                         
                numdays = numdays;
            if (month == 2)                         
                numdays = numdays + 31;
            if (month == 3)                         
                numdays = numdays + 28 + 31;
            .
            .
            .
            .
            .
        if (check condition )       //check if leapyear
        {
            if (month == 1 || month == 2)                           // January 
                numdays = numdays;
            else 
                numdays = numdays +1;
        }       
        int daycode = numdays % 7;
        return daycode; 
}

void printheader(int month, int year)
{
        printf("\n\tSun ");
        printf("\tMon ");
        printf("\tTue ");
}

Upvotes: 0

kuldeep kumar joshi
kuldeep kumar joshi

Reputation: 116

it may help and useful for you .

int main()
{
int  day, month, year, nummonths;
    printf("Enter Month, Year, and Number of Months");
    scanf("%d %d %d", &month, &year, &nummonths);
    if (nummonths > 12)
        year = year + nummonths%12;

    printheader(month, year);
    int numdays = getndim(month, year);
    int daycode = getdaycode(month, day, year);

   for (day = 1; day <= numdays; day++) 
    {   printf("%4d", day);
        if (day % 7 > 0)
            printf("\t");
        else
            printf("\n");
    }
}

but apart form solution of that specific problem you need work on some skills that can help you .

Please prefer some book and online resources and complete any one of them

1> Book :- let us c ,By:- balaguruswami

2> Tutorials http://www.w3schools.in/c/intro/

3> Tutorials http://www.tutorialspoint.com/cprogramming/

Upvotes: 0

Related Questions