Hey guys i have to create a program which is based on the unix calendar command which shows the ascii calendar in the format of example: March mon tu wed thu fri sat sun 1 2 3 4 5 6 7 8 etc etc But the program will run by typing in a month from 0 - 12 , 0 is suppose to be valid because if the user types 0 it will display all months. But if the user types 1 for example it will just display january. But after you have typed in the month you type in the year considering the leap years then it will display the month. I have done some input for both month and year functions but how will i create teh rest of the algorith could someone explain it very simply please? thnxs joey
I have the program ready but would like to give a part of it so that you can work on the main logic and go ahead. Initialize the variables as Code: int month[]={{31},{28},{31},{30},{31},{30},{31},{31},{30},{31},{30},{31}}; Then check for Leap Year Code: if((yr%4==0)&&((yr%100!=0)||(yr%400==0))) month[1]=29; Then you can use the below code to display the calender Code: void days(int *m,int *yr) { int i,md=0,leap=0,track; unsigned int d,yrd; for(i=Y;i<*yr;i++) { if((i%4==0)&&((i%100!=0)||(i%400==0))) leap++; } for(i=0;i<(*m-1)&&(i<11);i++) md=md+month[i]; yrd=(*yr-Y)*365; d=yrd+leap+md; track=d%7; display(&track); } void display(int *track) { int t,dt,loop; t=*track; printf("\n\n\n\n\t\t"); printf("Mon\tTues\tWed\tThurs\tFri\tSat\tSun\n\n"); for(loop=0;loop<t+2;loop++) /*t+2 due to two additional \t*/ printf("\t"); for(dt=1;dt<=month[m-1];dt++) { if(t%7==0 && t!=0) printf("\n\n\t\t"); printf("%d\t",dt); t++; } } Thanks Shabbir
By the way could you explain a little more how that void days function works and how it prints it? thnxs
Simple it checks how many leap years exists between the current year that is passed as parameter and Y. Then it adds up all the days of the month for the calender year. Then it calculates the days in the year, month and week. Then it displays them all through the display function by getting the array.
Also can i ask im getting a funny error when im intializing the variable array of months braces around scalar initializer error Where should i actually intialize the variable in main or in a seperate function because most likely all the other functions would have to use the array ? Code: int main(void) { unsigned int month [] = {{31}, {28}} /* etc etc*/ unsigned long year; getMonth(&month) getYear(&year); return EXIT_SUCCESS; } unsigned getMonth(unsigned int *month) { } And is it a good idea to work out the leap year in a seperate function then call it in the main? Just trying to get an idea how it should be designed as well?
Its a Global variable. I just did not want to make it passing to all the functions. Design can always be improved as I have just mad the algo to work.