this is baffling. i have no idea what ur suggestion changed, but i no longer get the error. the program runs, but i cant get it to go through the loop, and im getting some pretty strange results. the program is supposed to escape the loop when the user presses ctrl z. i tried making it a while loop, but nothing changed. ive been debugging for a few hours now and i cant figure it out. first lat3 and long3 are assigned EOF, which the debugger thinks is some number -9.225e61, then it goes through the scanf and completely ignores what number i enter and still considers lat3 and long3 to be -9.225e61 heres the new source and my output:
//patrick allard
//program4
//prof ed ryder
#include "stdio.h"
#include "stdlib.h"
#include "math.h"
int main()
{double difflatt;
//declare input variables
double lat1, lat2, lat3, long1, long2, long3;
//aquire input values from user
printf("\nEnter position of way point 1 (latitude and longitude): ");
scanf("%lf %lf", &lat1, &long1);
printf("\nEnter position of way point 2 (latitude and longitude): ");
scanf("%lf %lf", &lat2, &long2);
//convert degrees to radians
lat1=lat1*.017453;
lat2=lat2*.017453;
long1=long1*.017453;
long2=long2*.017453;
//make suure difflat and difflong are within domain of function cos
double difflat1=fabs(lat1-lat2);
double difflong1=fabs(long1-long2);
while (difflat1>6.2832)
{
difflat1=difflat1-6.2832;
}
while (difflong1>6.2832)
{
difflong1=difflong1-6.2832;
}
//makesure asineparam is within the domain of function asin
double asinparam1=sqrt(fabs(1.0-.5*cos(difflat1)-.5*cos(difflong1)));
while (asinparam1>1)
{
asinparam1=asinparam1-2;
}
//declare and assign distance output variable
double d1=asin(asinparam1)*2.0*3963.1;
//display desired output
printf("\nDistance traveled =%6.1lf miles", d1);
double pathd=d1;
while (1==1)
{
//aquire input values from user
printf("\nEnter position of way point 3 (latitude and longitude): ");
lat3=EOF;
long3=EOF;
scanf("%lf %lf", &lat3, &long3);
//how to break the loop
if (lat3=EOF)
{
break;
}
if (long3=EOF)
{
break;
}
//convert degrees to radians
double lat3=lat3*.017453;
double long3=long3*.017453;
//make suure difflat and difflong are within domain of function cos
double difflat2=fabs(lat2-lat3);
double difflong2=fabs(long2-long3);
while (difflat2>6.2832)
{
difflat2=difflat2-6.2832;
}
while (difflong2>6.2832)
{
difflong2=difflong2-6.2832;
};
//makesure asineparam is within the domain of function asin
double asinparam2=sqrt(fabs(1.0-.5*cos(difflat2)-.5*cos(difflong2)));
while (asinparam2>1)
{
asinparam2=asinparam2-2;
}
//declare and assign distance output variable
double d2=asin(asinparam2)*2.0*3963.1;
pathd=pathd+d2;
//display desired output
printf("\nDistance traveled =%6.1lf miles", pathd);
}
//make suure difflat and difflong are within domain of function cos
/* ERROR */ difflatt=fabs(lat1-lat3);
double difflongt=fabs(long1-long3);
/* ERROR */ while (difflatt>6.2832)
{
/* ERROR */ difflatt=difflatt-6.2832;
}
while (difflongt>6.2832)
{
difflongt=difflongt-6.2832;
}
//makesure asineparam is within the domain of function asin
double asinparamt=sqrt(fabs(1.0-.5*cos(difflatt)-.5*cos(difflongt)));
while (asinparamt>1)
{
asinparamt=asinparamt-2;
}
//declare and assign distance output variable
double dt=asin(asinparamt)*2.0*3963.1;
//display desired output
printf("\n\n Total Distance traveled =%6.1lf miles\nStart to finish distance =%6.1lf miles", pathd, dt);
for(;;);
return 0;
}
Enter position of way point 1 (latitude and longitude): 1 1
Enter position of way point 2 (latitude and longitude): 2 2
Distance traveled = 97.8 miles
Enter position of way point 3 (latitude and longitude): 3 3
Total Distance traveled = 97.8 miles
Start to finish distance =-8707.0 miles