Parse error in program
Author |
Message |
JR
|
Posted: Tue Oct 03, 2006 9:54 pm Post subject: Parse error in program |
|
|
Hi, i'm making a C program for class and i have everything done but i get an error which i cant find the fix for, any idea what might cause the error?
The program converts Dates from the julian calendar to the georgian calendar.
code: |
#include <stdio.h>
#include <math.h>
/*Define Function JD for later use in the program */
double JD(double date);
main()
{
int valid=1;
double J_date;
printf("======= JULIAN DATE CONVERTER =========\n");
/* gets input from user */
printf(" Enter the Julian date number, number must be bigger than 2299160)\n");
scanf(" %lf ", &J_date);
/* Check to see if proper date was entered */
while( valid != 0 )
{
If(J_date > 2299160)
{
valid=0;
}
else
{
printf("Wrong number inserted please enter a number bigger than 2299160\n");
scanf(" %lf ", &J_date);
}
}
/* Calls the function JD */
double JD(J_date);
}
/*
A new function named JD,
Does the convertion from Julian date
To Gregorian Date
*/
double JD(double date)
{
int timeofday;
int final_hour,final_minute;
int hour,minute,second;
double hour_decimal,minute_decimal;
double decimal_value;
long lc, nc, ic, jc;
int day, month, year;
lc = date + 68569;
nc = 4 * lc / 146097;
lc = lc - (146097 * nc + 3) / 4;
ic = 4000 * (lc + 1) / 1461001;
lc = lc - 1461 * ic / 4 + 31;
jc = 80 * lc / 2447;
day = lc - 2447 * jc / 80;
lc = jc / 11;
month = jc + 2 - 12 * lc;
year = 100 * (nc - 49) + ic + lc;
decimal_value = date - floor(date);
hour = decimal_value * 24;
hour_decimal= hour % 10;
minute = hour_decimal * 60;
minute_decimal = minute % 10;
second = minute_decimal * 60;
final_hour = 12 + hour;
final_minute= minute;
while(second > 59)
{
second= second -60;
final_minute++;
}
while(final_minute>59)
{
final_minute = final_minute - 60;
final_hour++;
}
if(final_hour == 24)
{
timeofday = 0;
final_hour == 12;
}
else
if (final_hour >24)
{
final_hour=final_hour - 24;
timeofday=0;
}
switch(month)
{
case 1:
//if (timeofday =0)
printf("January %d %d, %d:%2d:%2dAM\n",day,year,final_hour,final_minute,second);
printf("January %d %d,%d:%2d:%2dPM\n", day,year,final_hour,final_minute,second);
break;
case 2:
//if (timeofday =0)
printf("February %d %d,%d:%2d:%2dAM\n",day,year,final_hour,final_minute,second);
printf("February %d %d,%d:%2d:%2dPM\n",day,year,final_hour,final_minute,second);
break;
case 3:
//if (timeofday =0)
printf("March %d %d, %d:%2d:%2dAM\n", day, year,final_hour,final_minute,second);
printf("March %d %d, %d:%2d:%2dPM\n", day, year,final_hour,final_minute,second);
break;
case 4:
//if (timeofday =0)
printf("April %d %d, %d:%2d:%2dAM\n", day, year,final_hour,final_minute,second);
printf("April %d %d, %d:%2d:%2dPM\n", day, year,final_hour,final_minute,second);
break;
case 5:
//if (timeofday =0)
printf("May %d %d, %d:%2d:%2d AM\n", day, year,final_hour,final_minute,second);
printf("May %d %d, %d:%2d:%2d PM\n", day, year,final_hour,final_minute,second);
break;
case 6:
//if (timeofday =0)
printf("June %d %d, %d:%2d:%2dAM\n", day, year,final_hour,final_minute,second);
printf("June %d %d, %d:%2d:%2dPM\n", day, year,final_hour,final_minute,second);
break;
case 7:
//if (timeofday =0)
printf("July %d %d, %d:%2d:%2dAM\n", day, year,final_hour,final_minute,second);
printf("July %d %d, %d:%2d:%2dPM\n", day, year,final_hour,final_minute,second);
break;
case 8:
//if (timeofday =0)
printf("August %d %d,%d:%2d:%2dAM\n", day, year,final_hour,final_minute,second);
printf("August %d %d,%d:%2d:%2dPM\n", day, year,final_hour,final_minute,second);
break;
case 9:
//if (timeofday =0)
printf("September %d %d,%d:%2d:%2dAM\n",day,year,final_hour,final_minute,second);
printf("September %d %d,%d:%2d:%2dPM\n",day,year,final_hour,final_minute,second);
break;
case 10:
//if (timeofday =0)
printf("October %d %d, %d:%2d:%2d AM\n", day, year,final_hour,final_minute,second);
printf("October %d %d, %d:%2d:%2d PM\n", day, year,final_hour,final_minute,second);
break;
case 11:
//if (timeofday =0)
printf("November %d %d, %d:%2d:%2d AM\n", day, year,final_hour,final_minute,second);
printf("November %d %d, %d:%2d:%2d PM\n", day, year,final_hour,final_minute,second);
break;
case 12:
//if (timeofday =0)
printf("December %d %d, %d:%2d:%2d AM\n", day, year,final_hour,final_minute,second);
printf("December %d %d, %d:%2d:%2d PM\n", day, year,final_hour,final_minute,second);
break;
}
return 0;
}
|
|
|
|
|
|
|
Sponsor Sponsor
|
|
|
md
|
Posted: Wed Oct 04, 2006 12:35 am Post subject: (No subject) |
|
|
first error that crops up:
code: | [john@saxifrage test]$ gcc test.c
test.c: In function 'main':
test.c:32: error: expected ';' before '{' token
test.c:45: warning: parameter names (without types) in function declaration |
After that there are any number of small errors in your code, such as incomplete code blocks ( {} bits). There are lots of logic errors too, including an infinite loop. Then there is the function call at the end of main which isn't valid. I think you may need to read up on functions.
because I am feeling generous here is some mostly working code, I've changed it so it won't output the right thing; just so you can't copy it outright
c++: | #include <stdio.h>
#include <math.h>
/*
A new function named JD,
Does the convertion from Julian date
To Gregorian Date
*/
void JD(double date)
{
int timeofday;
int final_hour,final_minute;
int hour,minute,second;
unsigned long hour_decimal,minute_decimal;
unsigned long decimal_value;
long lc, nc, ic, jc;
int day, month, year;
lc = date + 68569;
nc = 4 * lc / 146097;
ic = lc - (146097 * nc + 3) / 4;
lc = 4000 * (lc + 1) / 1461001;
lc = lc - 1461 * ic / 4 + 31;
jc = 80 * lc / 2447;
day = lc - 2447 * jc / 80;
lc = jc / 11;
month = jc + 2 - 12 * lc;
year = 100 * (nc - 49) + ic + lc;
decimal_value = date;// - floor(date);
hour = decimal_value * 24;
hour_decimal = hour % 10;
minute = hour_decimal * 60;
minute_decimal = minute % 10;
second = minute_decimal * 60;
final_hour = 12 + hour;
final_minute= minute;
while(second > 59)
{
second= second -60;
final_minute++;
}
while(final_minute>59)
{
final_minute = final_minute - 60;
final_hour++;
}
if(final_hour == 24)
{
timeofday = 0;
final_hour == 12;
}
else if (final_hour >24)
{
final_hour=final_hour - 24;
timeofday=0;
}
switch(month)
{
case 1:
//if (timeofday =0)
printf("January %d %d, %d:%2d:%2dAM\n",day,year,final_hour,final_minute,second);
printf("January %d %d,%d:%2d:%2dPM\n", day,year,final_hour,final_minute,second);
break;
case 2:
//if (timeofday =0)
printf("February %d %d,%d:%2d:%2dAM\n",day,year,final_hour,final_minute,second);
printf("February %d %d,%d:%2d:%2dPM\n",day,year,final_hour,final_minute,second);
break;
case 3:
//if (timeofday =0)
printf("March %d %d, %d:%2d:%2dAM\n", day, year,final_hour,final_minute,second);
printf("March %d %d, %d:%2d:%2dPM\n", day, year,final_hour,final_minute,second);
break;
case 4:
//if (timeofday =0)
printf("April %d %d, %d:%2d:%2dAM\n", day, year,final_hour,final_minute,second);
printf("April %d %d, %d:%2d:%2dPM\n", day, year,final_hour,final_minute,second);
break;
case 5:
//if (timeofday =0)
printf("May %d %d, %d:%2d:%2d AM\n", day, year,final_hour,final_minute,second);
printf("May %d %d, %d:%2d:%2d PM\n", day, year,final_hour,final_minute,second);
break;
case 6:
//if (timeofday =0)
printf("June %d %d, %d:%2d:%2dAM\n", day, year,final_hour,final_minute,second);
printf("June %d %d, %d:%2d:%2dPM\n", day, year,final_hour,final_minute,second);
break;
case 7:
//if (timeofday =0)
printf("July %d %d, %d:%2d:%2dAM\n", day, year,final_hour,final_minute,second);
printf("July %d %d, %d:%2d:%2dPM\n", day, year,final_hour,final_minute,second);
break;
case 8:
//if (timeofday =0)
printf("August %d %d,%d:%2d:%2dAM\n", day, year,final_hour,final_minute,second);
printf("August %d %d,%d:%2d:%2dPM\n", day, year,final_hour,final_minute,second);
break;
case 9:
//if (timeofday =0)
printf("September %d %d,%d:%2d:%2dAM\n",day,year,final_hour,final_minute,second);
printf("September %d %d,%d:%2d:%2dPM\n",day,year,final_hour,final_minute,second);
break;
case 10:
//if (timeofday =0)
printf("October %d %d, %d:%2d:%2d AM\n", day, year,final_hour,final_minute,second);
printf("October %d %d, %d:%2d:%2d PM\n", day, year,final_hour,final_minute,second);
break;
case 11:
//if (timeofday =0)
printf("November %d %d, %d:%2d:%2d AM\n", day, year,final_hour,final_minute,second);
printf("November %d %d, %d:%2d:%2d PM\n", day, year,final_hour,final_minute,second);
break;
case 12:
//if (timeofday =0)
printf("December %d %d, %d:%2d:%2d AM\n", day, year,final_hour,final_minute,second);
printf("December %d %d, %d:%2d:%2d PM\n", day, year,final_hour,final_minute,second);
break;
}
}
main()
{
int valid = 0;
double J_date;
printf("======= JULIAN DATE CONVERTER =========\n");
/* gets input from user */
do
{
printf(" Enter the Julian date number, number must be bigger than 2299160)\n");
scanf("%lf", &J_date);
/* Check to see if proper date was entered */
if(J_date > 2299160)
valid = 1;
else
printf("Wrong number inserted please enter a number bigger than 2299160\n");
} while (!valid);
JD(J_date);
}
|
|
|
|
|
|
|
|
|