LinuxQuestions.org
Review your favorite Linux distribution.
Go Back   LinuxQuestions.org > Forums > Non-*NIX Forums > Programming
User Name
Password
Programming This forum is for all programming questions.
The question does not have to be directly related to Linux and any language is fair game.

Notices


Reply
  Search this Thread
Old 11-26-2003, 09:50 PM   #1
john23
LQ Newbie
 
Registered: Nov 2003
Posts: 13

Rep: Reputation: 0
help with C programmin?


Hey could anyone help me fix my error for this C progam that calculates the surface distance. It is showing some errors.
Thanks
#include <stdio.h>
#include <math.h>
#include <string.h>
#define RHO 6367
#define PI 3.141592654

void read_GPS(float *,float *,float *,char *);
float convert_DD(float *, float *, float *);
float calc_SphereCoord_lat( char *, float *);
float calc_SphereCoord_long(char *, float *);
float deg2rad(float *);
float calc_3DCoord(float *, float *);
float straight_D(float *, float *, float *, float *, float *, float *);
int main(void)

{
float deg_lat_1, min_lat_1, sec_lat_1, deg_long_1, min_long_1, sec_long_1;
float deg_lat_2, min_lat_2, sec_lat_2, deg_long_2, min_long_2, sec_long_2;
float dec_deg_1, dec_deg_2, dec_deg_3, dec_deg_4;
float rad_lat_1, rad_long_1, rad_lat_2, rad_long_2;
float phi_lat_1, theta_long_1, phi_lat_2, theta_long_2;
char s1[10], s2[10], s3[10], s4[10];

printf("Please enter co-ordinates in format of 123 45 30 North\n" );
printf("where 123 = Degrees 45 = minutes 30 = seconds and North = direction.\n");

printf("Please enter in lattitudinal co-ordinates for start point:\n");
read_GPS(起lat_1,&min_lat_1,&sec_lat_1,s1);
dec_deg_1 = convert_DD(起lat_1,&min_lat_1,&sec_lat_1);
rad_lat_1 = calc_SphereCoord_lat(s1, &dec_deg_1);
phi_lat_1 = deg2rad(&rad_lat_1);

printf("Please enter in longitudinal co-ordinates for start point:\n");
read_GPS(起long_1,&min_long_1,&sec_long_1,s2);
dec_deg_2 = convert_DD(起long_1,&min_long_1,&sec_long_1);
rad_long_1 = calc_SphereCoord_long(s2, &dec_deg_2);
theta_long_1 = deg2rad(&rad_long_1);
calc_3DCoord(&phi_lat_1, &theta_long_1);

printf("Please enter lattitudinal co-ordinates for final destination:\n");
read_GPS(起lat_2,&min_lat_2,&sec_lat_2,s3);
dec_deg_3 = convert_DD(起lat_2, &min_lat_2,&sec_lat_2);
rad_lat_2 = calc_SphereCoord_lat(s3, &dec_deg_3);
phi_lat_2 = deg2rad(&rad_lat_2);

printf("Please enter longitudinal co-ordinates for final destination:\n");
read_GPS(起long_2,&min_long_2,&sec_long_2,s4);
dec_deg_4 = convert_DD(起long_2,&min_long_2,&sec_long_2);
rad_long_2 = calc_SphereCoord_long(s4, &dec_deg_4);
theta_long_2 = deg2rad(&rad_long_2);
calc_3DCoord(&phi_lat_2, &theta_long_2);

printf("Degrees:%f \n Minutes: %f \n Seconds:%f \n Direction:%s\n", deg_lat_1,
min_lat_1,sec_lat_1, s1);
printf("%f %f %f %s\n", deg_long_1, min_long_1, sec_long_1,s2);
printf("%f %f %f %s\n", deg_lat_2, min_lat_2, sec_lat_2, s3);
printf("%f %f %f %s\n", deg_long_2, min_long_2, sec_long_2,s4);

printf("%c", getchar());
return(0);
}

void read_GPS(float *degrees,float *minutes,float *seconds,char *direction)
{
scanf("%f%f%f%s", degrees, minutes, seconds, direction);
return;
}

float convert_DD(float *degrees, float *minutes, float *seconds)
{
float dec_deg,totalmins;

totalmins = *minutes + (*seconds / 60);
dec_deg = (totalmins /60) + *degrees;
printf("The decimal degree is %f", dec_deg);
printf("%c", getchar());
return(dec_deg);

}

float calc_SphereCoord_lat(char *direction, float *dec_deg)
{
int temp_1;
float phi;
char s5[] = "North";
temp_1 = strcasecmp(direction,s5);
if (temp_1 == 0)
phi = 90 - *dec_deg;
else
phi = 90 + *dec_deg;
printf("The spherical co-ordinate phi is: %f\n", phi);

return(phi);
}

float calc_SphereCoord_long(char *direction, float *dec_deg)
{
int temp;
float theta;
char s6[] = "East";
temp = strcasecmp(direction,s6);
if (temp == 0)
theta = *dec_deg;
else
theta = (-*dec_deg);
printf("The spherical co-ordinate theta is: %f\n", theta);
return(theta);
}

float deg2rad(float *dec_deg)
{
float radians;
radians = (*dec_deg * 2 * PI) / 360;
printf("%f as radians is: %f\n", *dec_deg, radians);
return(radians);
}

float calc_3DCoord(float *phi, float *theta)
{
float temp_1, temp_2, temp_3;
temp_1 = (RHO * (sin(*phi)) * (cos(*theta)));
temp_2 = (RHO * (sin(*phi)) * (sin(*theta)));
temp_3 = (RHO * (cos(*phi)));
printf("The cartesian co-ordinates are: %f %f %f\n", temp_1, temp_2, temp_3);
return(0);
}
 
Old 11-26-2003, 10:05 PM   #2
crabboy
Senior Member
 
Registered: Feb 2001
Location: Atlanta, GA
Distribution: Slackware
Posts: 1,821

Rep: Reputation: 121Reputation: 121
What kind of errors does it show? I compiled and ran the program just fine. If it's a problem with the calculations that should be easy enough to fix.
 
Old 11-26-2003, 10:35 PM   #3
john23
LQ Newbie
 
Registered: Nov 2003
Posts: 13

Original Poster
Rep: Reputation: 0
this s the error that it gives me,
ERROR: missing ')'
ERROR: number of argument is 0, need 4 arguments
ERROR: syntax error before or at line 28
--->: read_GPS(起lat_1,&min_lat_1,&sec_lat_1,s1);
BUG: read_GPS(<==???
 
Old 11-26-2003, 11:02 PM   #4
crabboy
Senior Member
 
Registered: Feb 2001
Location: Atlanta, GA
Distribution: Slackware
Posts: 1,821

Rep: Reputation: 121Reputation: 121
Is this your code or did you copy it from somewhere?

The variable names were getting hacked by the vb codes on this site. The degree symbol is actually a (ampersand)deg. Change all the degree symbols into (ampersand)deg

Last edited by crabboy; 11-26-2003 at 11:06 PM.
 
Old 11-26-2003, 11:03 PM   #5
john23
LQ Newbie
 
Registered: Nov 2003
Posts: 13

Original Poster
Rep: Reputation: 0
deg
 
Old 11-26-2003, 11:08 PM   #6
crabboy
Senior Member
 
Registered: Feb 2001
Location: Atlanta, GA
Distribution: Slackware
Posts: 1,821

Rep: Reputation: 121Reputation: 121
I'm not sure what is converting the (ampersand)deg to &deg. It may be an html tag.
 
Old 11-26-2003, 11:18 PM   #7
john23
LQ Newbie
 
Registered: Nov 2003
Posts: 13

Original Poster
Rep: Reputation: 0
Thanks alot, it works.
 
Old 11-26-2003, 11:33 PM   #8
john23
LQ Newbie
 
Registered: Nov 2003
Posts: 13

Original Poster
Rep: Reputation: 0
how do you make this program calculate the surface distance between the two points... Please help
 
Old 11-27-2003, 11:35 AM   #9
nowonmai
Member
 
Registered: Jun 2003
Posts: 481

Rep: Reputation: 48
riemann geometry
 
Old 11-27-2003, 01:59 PM   #10
john23
LQ Newbie
 
Registered: Nov 2003
Posts: 13

Original Poster
Rep: Reputation: 0
Can i please get help with the above program to calculate the surface distance using the function straight_D and surface_D. The straight distance can be calculated by the formula,

d=sqrt((x2-x1)^2+ (y2-y1)^2+(z2-z1)^2)

The surface distance can be calculated by the straight line distance above:

surface_distance= 2sin(straight_distance/2)

Thanks You to anyone who can help, i want to include this in my program to calculate the surface distance!
 
Old 11-27-2003, 07:12 PM   #11
john23
LQ Newbie
 
Registered: Nov 2003
Posts: 13

Original Poster
Rep: Reputation: 0
is there anyone who can help me with this?
 
Old 11-27-2003, 10:28 PM   #12
john23
LQ Newbie
 
Registered: Nov 2003
Posts: 13

Original Poster
Rep: Reputation: 0
can it be called in a function into a functio to make it work
 
Old 11-28-2003, 04:14 AM   #13
nowonmai
Member
 
Registered: Jun 2003
Posts: 481

Rep: Reputation: 48
what are x, y and z in the above formula?
 
Old 11-28-2003, 07:17 AM   #14
john23
LQ Newbie
 
Registered: Nov 2003
Posts: 13

Original Poster
Rep: Reputation: 0
It is temp_1, temp_2, temp_3 for both start pont and endpoint!
 
Old 11-28-2003, 11:58 AM   #15
crabboy
Senior Member
 
Registered: Feb 2001
Location: Atlanta, GA
Distribution: Slackware
Posts: 1,821

Rep: Reputation: 121Reputation: 121
Are you sure the formulas and the posted program are correct? I tested it out and I'm getting incorrect results. How do you know the existing program is correct?
 
  


Reply


Thread Tools Search this Thread
Search this Thread:

Advanced Search

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is Off
HTML code is Off



Similar Threads
Thread Thread Starter Forum Replies Last Post
Data base programmin mola Programming 1 06-05-2005 03:31 AM
Books on Kernal and System Programmin Tinku Linux - General 2 06-03-2005 11:10 PM
Network Programmin Boffy Programming 1 03-13-2005 11:51 AM
EXPLOIT programmin darkseed2g3 Linux - Security 7 10-19-2003 09:31 AM
Basics..in programmin in Linux. Nanu Programming 3 04-12-2003 07:29 PM

LinuxQuestions.org > Forums > Non-*NIX Forums > Programming

All times are GMT -5. The time now is 09:56 AM.

Main Menu
Advertisement
My LQ
Write for LQ
LinuxQuestions.org is looking for people interested in writing Editorials, Articles, Reviews, and more. If you'd like to contribute content, let us know.
Main Menu
Syndicate
RSS1  Latest Threads
RSS1  LQ News
Twitter: @linuxquestions
Open Source Consulting | Domain Registration