I am using C language UNIX program will only be tested with

I am using C language UNIX

program will only be tested with meaningful integer data with years only in the range from 1800 to 2016

I am not allowed to use repetition Thank you !

Problem: Given a year and a day number determine how long until the next Tuesday occurs in the specified year. See problem #60 on page 300 of your C programming text for some useful formulas Example Execution #1 : (The date January 10, 2016 occurs on a Sunday so the next Tuesday is in two days) Enter the year 2016 Enter the day number [1 - 366] 10 The day number entered (10) is a Sunday. The next Tuesday will occur in 2 days. Example Execution #2: (No more Tuesdays occur in that year on or after the given day number.) Enter the year 2015 Enter the day number [ - 365]: 365 The day number entered (365) is a Thursday. There are no more Tuesdays remaining in the year. Example Execution #3: Enter the year 2013 Enter the day number [1 - 365] 365 The specified day number (365) is a Tuesday Example Execution #4: Enter the year: 2016 Enter the day number [ - 366]: 300 The day number entered (300) is a Wednesday. The next Tuesday wil1 occur in 6 days Example Execution #5: Enter the year 2016 Enter the day number [1 - 366]: 49 The day number entered (49) is a Thursday The next Tuesday will occur in 5 days Example Execution #6: Enter the year: 2016 Enter the day numbe [1-366]: 1

Solution

#include <stdio.h>
#include <string.h>
int day_week(int day,int mon,int year)
{
   int md[] = { 0, 3, 2, 5, 0, 3, 5, 1, 4, 6, 2, 4 };
   if(mon<3)
   {
       year = year-1;
   }
  
int ans = ( year + year/4 - year/100 + year/400 + md[mon-1] + day) % 7;
return ans;
}
int fleap(int year)
{
   int leap=0;
   if(year%400==0)
   {
       leap=1;
   }
   else if(year%100==0)
   {
       leap=0;
   }
   else if(year%4==0)
   {
       leap=1;
   }
   return leap;
}
int find_mon(int yday,int year)
{
   int leap=fleap(year);
   int m_day[] = {31,29,31,30,31,30,31,31,30,31,30,31};
   if(leap==0)
   {  
       m_day[1]=28;  
   }
   int count=0,mon=-1,i;
   for(i=0;i<12;i++)
   {
       count=count+m_day[i];
       if(count>=yday)
       {
           mon=i;
           break;
       }
   }
   return mon;

}
int find_mday(int mon,int yday,int year)
{
   int leap=fleap(year);
   int m_day[] = {31,29,31,30,31,30,31,31,30,31,30,31};
   if(leap==0)
   {  
       m_day[1]=28;  
   }
   int count=0,mday=-1,i;
   for(i=0;i<12;i++)
   {
       count=count+m_day[i];
       if(count>=yday)
       {
           mday=yday-(count-m_day[i]);
           break;
       }
   }
   return mday;
}
int main()
{
   int year,yday,leap;
   printf(\"Enter the year: \");
   scanf(\"%d\",&year);
   leap = fleap(year);
   printf(\"Enter the day number[1-%d]: \",365+leap);
   scanf(\"%d\",&yday);
   int mon = find_mon(yday,year);
   int mday = find_mday(mon,yday,year);
   int d_week = day_week(mday,mon+1,year);
   //printf(\"***%d %d %d****\ \",mon+1,mday,d_week);
   char *a[] = {\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"};
   int ans = (9-d_week)%7;
   if(ans==0)
   {
       printf(\"The specificed day number(%d) is a Tuesday.\ \",yday);
   }
   else
   {
       printf(\"The day number entered(%d) is a %s\ \",yday,a[d_week]);
   }
   if(yday+ans>365+fleap(year))
   {
       printf(\"There are no more Tuesdays in this year.\ \");
   }
   else if(ans!=0)
   {
       printf(\"The next Tuesday will occur in %d days\ \",ans);
   }
   return 0;
}

I am using C language UNIX program will only be tested with meaningful integer data with years only in the range from 1800 to 2016 I am not allowed to use repet
I am using C language UNIX program will only be tested with meaningful integer data with years only in the range from 1800 to 2016 I am not allowed to use repet

Get Help Now

Submit a Take Down Notice

Tutor
Tutor: Dr Jack
Most rated tutor on our site