#include<stdio.h>
#include<math.h>
#include<string.h>
#include<stdlib.h>
#include<Windows.h>
#include<iostream>
#include<fstream>
#pragma warning(disable:4996)
#define pi 3.1415926
typedef struct cut
{
char ID[10];
double x;
double y;
double z;
}cutinfo;
int main{
cutinfo cut[1000] = { 0 };
int nNum;
FILE* fp = fopen("C:\\Users\\86159\\Desktop\\断面数据.txt", "r");
if (fp == NULL)
{
printf("not get it\n");
exit(0);
}
for (nNum = 3; nNum < 50; nNum++)
{
fscanf(fp, "%s,%lf,%lf,%lf\n", cut[nNum].ID, &cut[nNum].x, &cut[nNum].y, &cut[nNum].z);
printf("%lf,%lf,%lf\n", cut[nNum].x, cut[nNum].y, cut[nNum].z);
}
fclose(fp);
system("PAUSE");
return 0;
按照道理来说,是可以对x,y,z进行提取并计算的
我接下来的计算是
int i;
for (i=1;i<nNum;i++)
{
double z;
z=double deAB(cut[i].y,cut[i+1].y,cut[i+1].x,cut[i].x);
printf("%f/n",z);
}
double deAB(double YA, double YB, double XB, double XA)//计算坐标方位角
{
double AB;
double cyab, cxab;
cyab = YB - YA;
cxab = XB - XA;
AB = atan(cyab / cxab);
if (cyab > 0)
{
if (cxab > 0)
{
printf("degAB=%f", AB);
}
else if (cxab < 0)
{
AB = 180 - AB;
printf("degAB=%f", AB);
}
else
{
AB = 90.0;
printf("degAB=%f", AB);
}
}
else if (cyab < 0)
{
if (cxab < 0)
{
AB = 180 + AB;
printf("degAB=%f", AB);
}
else if (cxab > 0)
{
AB = 360 - AB;
printf("degAB=%f", AB);
}
else
{
AB = 270.0;
printf("degAB=%f", AB);
}
}
else if (cyab == 0)
{
if (cxab < 0)
{
AB = 180.0;
printf("degAB=%f", AB);
}
else
{
AB = 0.0;
printf("degAB=%f", AB);
}
}
return AB;
}
希望能够对此程序进行修改,写出修改后能提取并计算的版本,同时写出c++的文件提取x,y,z并计算的编程(本人在学c++,写好备注说明,谢谢了)
文件:链接: https://pan.baidu.com/s/1_wspk73oUnm5TS-jN53rvA?pwd=ccjv 提取码: ccjv