5 Replies - 12349 Views - Last Post: 30 October 2006 - 12:16 AM Rate Topic: -----

#1 hmapes  Icon User is offline

  • New D.I.C Head

Reputation: 0
  • View blog
  • Posts: 13
  • Joined: 18-September 06

Day of Week

Posted 29 October 2006 - 03:14 PM

The assignment is the following: write a program that determines the day of the week for a given date by using the julian day number. this is the number of days that have elapsed since January 1, 4713 BC. The JDN date can calculate the day of week by this formula - DayofWeek = (JDN +1) % 7 The result is in the range of 0 to 6 with 0 as Sunday. How is the JDN computed? If using the Gregorian calendar (later than October 15, 1582) then compute intRes1 with the following formula or let intRes1 be zero.

intRes1 = 2 - year / 100 + year / 400
second result is computed as: intRes2 = int(365.25 * year)
third value is computed as: intRes3 = int(30.6001 * (month + 1))
JDN is computed as JDN = intRes1 + intRes2 + intRes3 + day + 1720994.5

Formulas require nine significant digits;using integer type long and floating-point type double. should prompt for input of date and label the output.


Here's my code for a problem I'm working on for class. I can't get it to work and don't know what I'm missing. Any advice would be great.



double intRes1;
long intRes2;
long intRes3;
double temp;

//Gregorian calendar test date
if(month <= 10 && day <=15 && year <=1582)
intRes1 = 0;
else
intRes1 = 2 - (year/100) + (year/400);

//JDN calculation
intRes2 = long(365.25 * year);
intRes3 = long(30.6001 * (month+1));
jdn = intRes1 + intRes2 + intRes3 + day + 1720994.5;
temp = intRes1 + intRes2 + intRes3 + day + 1720994.5;
if (temp - jdn >= .5)
jdn = jdn + 1;

Is This A Good Question/Topic? 0
  • +

Replies To: Day of Week

#2 Amadeus  Icon User is online

  • g+ + -o drink whiskey.cpp
  • member icon

Reputation: 248
  • View blog
  • Posts: 13,506
  • Joined: 12-July 02

Re: Day of Week

Posted 29 October 2006 - 05:35 PM

Can you specify the problem you are encountering, along with any error messages you are receiving? Also, this problem looks quite similar to another on the site...perhaps taking a look might guide you as well:

http://forums.dreami...wtopic20136.htm
Was This Post Helpful? 0
  • +
  • -

#3 hmapes  Icon User is offline

  • New D.I.C Head

Reputation: 0
  • View blog
  • Posts: 13
  • Joined: 18-September 06

Re: Day of Week

Posted 29 October 2006 - 07:16 PM

#include <string>
#include <cmath>
#include <iostream>
#include <iomanip>

using namespace std;

//Determine Function Prototypes
void DetermineWeekDay(float, float, float, int, int, int, int, int&);


int main()
{
	
	//Input variables
	  float day;
	  float month;
	  float year;
	  int DayofWeek;
	  long int intRes1 = 0;
	  long int intRes2 = 0;
	  long int intRes3 = 0; 
	  long int JDN = 0; 
	  bool dataOK = false;
	  do

		{
		cout << "Please enter the month";
		cin >> month;
		cout << "Please enter the week day:";
		cin >> day;
		cout << "Please enter the year:";
		cin >> year;
		
		 if (month <= 10 && day <= 15 && year <= 1582) {
		intRes1 = 0;
	}
	else {
		cout << "year / 100 = " << year / 100 
			 << ", year / 400 = " << year / 400
			 << endl;
		intRes1 = 2 - (year / 100) + (year / 400);
	}
	cout << "intRes1 = " << intRes1 << endl;

		   
{
	 //DoCalculation
}

	} while (dataOK== false);

	

	DetermineWeekDay (day, month, JDN, year, intRes1, intRes2, intRes3,  DayofWeek);
	cin.get(), cin.get();
	return 0;
}

void DetermineWeekDay (float day,float month,float year,long int JDN, long int intRes1, 
					  long int intRes2,long int intRes3,int& DayofWeek)

{
	 //Precondition: The day of the week must be entered.
	 //Postcondition: The user must enter information correctly.

	  
	intRes1 = (2-year / 100 + year / 400);
	intRes2 = int(365.25 * year);
	intRes3 = int(30.6001 * (month + 1));
	JDN = ((intRes1 + intRes2 + intRes3 + day) + 1720944.5);
	temp = intRes1 + intRes2 + intRes3 + day + 1720994.5;
	if (temp - JDN>= .5)
	DayofWeek = ((JDN + 1) % 7)+1;  

		cout << " The day of the week " <<  " for " 
			 << month << day << year << "is" <<  DayofWeek;
		if (DayofWeek == 0)
		   cout << "Sunday";
		else if (DayofWeek == 1)	
		   cout << "Monday";
		else if (DayofWeek == 2)	
		   cout << "Tuesday";
		else if (DayofWeek == 3)	
		   cout << "Wednesday";
		else if (DayofWeek == 4)	
		   cout << "Thursday";
		else if (DayofWeek == 5)   
		   cout << "Friday";
		else if (DayofWeek == 6)   
		   cout << "Saturday";
		   cout << endl; 

return;


Here are my errors and I don't know what to fix. The problem you gave me is the same one so it looks like someone else is having problems with it too.

warning C4244: '=' : conversion from 'float' to 'long', possible loss of data line 43
warning C4244: 'argument' : conversion from 'float' to 'int', possible loss of data line 56
warning C4244: 'argument' : conversion from 'long' to 'float', possible loss of data line 56
warning C4244: '=' : conversion from 'float' to 'long', possible loss of data line 69
warning C4244: '=' : conversion from 'double' to 'long', possible loss of data line 72
): error C2065: 'temp' : undeclared identifier line 73
error C3861: 'temp': identifier not found, even with argument-dependent lookup line 74
Was This Post Helpful? 0
  • +
  • -

#4 Amadeus  Icon User is online

  • g+ + -o drink whiskey.cpp
  • member icon

Reputation: 248
  • View blog
  • Posts: 13,506
  • Joined: 12-July 02

Re: Day of Week

Posted 29 October 2006 - 07:25 PM

You are getting the error becasue you are using a variable named temp in your function, but have never declared or instantiated such a variable.

The others are warnings becasue you are assigning values of one variable type to another variable type.
Was This Post Helpful? 0
  • +
  • -

#5 hmapes  Icon User is offline

  • New D.I.C Head

Reputation: 0
  • View blog
  • Posts: 13
  • Joined: 18-September 06

Re: Day of Week

Posted 29 October 2006 - 08:20 PM

#include <string>
#include <cmath>
#include <iostream>
#include <iomanip>

using namespace std;

//Determine Function Prototypes
void DetermineWeekDay(float, float, float, int, int, int, int, int&);


int main()
{

//Input variables
float day;
float month;
float year;
int DayofWeek;
int intRes1 = 0;
int intRes2 = 0;
int intRes3 = 0;
int JDN = 0;
bool dataOK = false;
do

{
cout << "Please enter the month";
cin >> month;
cout << "Please enter the week day:";
cin >> day;
cout << "Please enter the year:";
cin >> year;

if (month<13)
dataOK = true;
else
cout << "Please enter a number less than 13 for the month: "
<< endl;
if (day<32);
else
cout << "Please enter a number less than 32 for the day:"
<< endl;

if((year>1582) || //Picks any years from Gregorian Calendar greater than 1582
(month>10) && (year==1582) || //Picks months greater than 10 in 1582 from Gregorian Calendar
(month== 10) && (day>15) && (year== 1582)) // Picks only month 10 and any days over 15 in year 1582 from Gregorian Calendar


{
// do calculation
}

} while (dataOK== false);



DetermineWeekDay (day, month, JDN, year, intRes1, intRes2, intRes3, DayofWeek);
cin.get(), cin.get();
return 0;
}

void DetermineWeekDay (float day,float month,float year, int JDN, int intRes1,
int intRes2, int intRes3,int& DayofWeek)

{
//Precondition: The day of the week must be entered.
//Postcondition: The user must enter information correctly.


intRes1 = (2-year / 100 + year / 400);
intRes2 = int(365.25 * year);
intRes3 = int(30.6001 * (month + 1));
JDN = ((intRes1 + intRes2 + intRes3 + day) + 1720944.5);
DayofWeek = ((JDN + 3) % 7);

cout << " The day of the week " << " for "
<< month << day << year << "is" << DayofWeek;
if (DayofWeek == 0)
cout << "Sunday";
else if (DayofWeek == 1)
cout << "Monday";
else if (DayofWeek == 2)
cout << "Tuesday";
else if (DayofWeek == 3)
cout << "Wednesday";
else if (DayofWeek == 4)
cout << "Thursday";
else if (DayofWeek == 5)
cout << "Friday";
else if (DayofWeek == 6)
cout << "Saturday";
cout << endl;

return;








}

Ok. I took that out completely. Can you help me with these errors, please? I need to turn my assignment in in several hours.

fatal error LNK1201: error writing to program database check for insufficient disk space, invalid path, or insufficient privilege
(58): warning C4244: 'argument' : conversion from 'float' to 'int', possible loss of data
(58): warning C4244: 'argument' : conversion from 'int' to 'float', possible loss of data
(71): warning C4244: '=' : conversion from 'float' to 'int', possible loss of data
(74): warning C4244: '=' : conversion from 'double' to 'int', possible loss of data
Was This Post Helpful? 0
  • +
  • -

#6 gregoryH  Icon User is offline

  • D.I.C Addict
  • member icon

Reputation: 60
  • View blog
  • Posts: 656
  • Joined: 04-October 06

Re: Day of Week

Posted 30 October 2006 - 12:16 AM

View Posthmapes, on 29 Oct, 2006 - 08:20 PM, said:

fatal error LNK1201: error writing to program database check for insufficient disk space, invalid path, or insufficient privilege
(58): warning C4244: 'argument' : conversion from 'float' to 'int', possible loss of data
(58): warning C4244: 'argument' : conversion from 'int' to 'float', possible loss of data
(71): warning C4244: '=' : conversion from 'float' to 'int', possible loss of data
(74): warning C4244: '=' : conversion from 'double' to 'int', possible loss of data

The first problem you need to fix is the fatal error...

Is there any possibility you are using a floppy drive to store your code?
Was This Post Helpful? 0
  • +
  • -

Page 1 of 1