如图
但是读取文件是如何统一处理呢?麻烦具体说明一下每一步的意思谢谢
计算的函数为
int mjd(double Y, double M, double D, double h, double N, double S )
{
double mjd;
double a,b,c;
a = (M + 9) / 12;
b = 7 / 4 * a;
c = (275 * M)/9;
mjd = -678967 + 367 * Y-b-c+D+h/24+N/1440+S/86400;
return mjd;
}
6项数据定义一个数据结构,然后逐行读取
b = 7 / 4 * a; 这个不对,7/4是整除,等于1。改为b = 7.0/4 * a;
文本标题栏多了个x,实际是5项数据
大概这样子(未调试)
#include <stdio.h>
typedef struct _carInfo
{
char id[10];
int status;
long long time;
double x;
double y;
}carInfo;
void getHMS(long long time,int *year,int *month,int *day,int *h,int *m,int *s)
{
*s = time%100;
time =time/100;
*m = time%100;
time = time/100;
*h = time%100;
time =time/100;
*day = time%100;
time = time/100;
*month = time%100;
*year = time/100;
}
int mjd(double Y, double M, double D, double h, double N, double S )
{
double mjd;
double a,b,c;
a = (M + 9) / 12;
b = 7.0 / 4 * a;
c = (275 * M)/9;
mjd = -678967 + 367 * Y-b-c+D+h/24+N/1440+S/86400;
return mjd;
}
int main()
{
carInfo car[1000] = {0};
int nNum = 0,i,year,month,day ,h,m,s;
FILE *fp = fopen("test.txt","r");
if(fp != NULL)
{
while(!feof(fp))
{
fscanf(fp,"%s,%d,%lld,%lf,%lf",car[nNum].id,&car[nNum].status,&car[nNum].time,&car[nNum].x,&car[nNum].y);
if(car[nNum].x > 0)
nNum++;
}
fclose(fp);
}
for(i=0;i<nNum;i++)
{
getHMS(car[i].time,&year,&month,&day,&h,&m,&s);
printf("%d\n",mjd(year,month,day,h,m,s));
}
return 0;
}