/* the struct */
typedef struct atom {
double x;
double y;
double z;
char line[200];
int is_connected;
struct atom *next;
} p_atom;
/* the existing function */
double
calcdist (double px, double py, double pz, double lx, double ly, double lz )
{
double x, y, z, sqr_sum;
x = px - lx;
y = py - ly;
z = pz - lz;
sqr_sum = pow (x, 2) + pow (y, 2) + pow (z, 2);
return sqrt (sqr_sum);
}
- 编写上述程序是为了计算 2 点之间的距离在 3D 中。如果我想编写一个接受 x,y,z 的新函数通过我的结构坐标并计算距离(同上(,是吗可能。。。如果是这样,怎么办?
- 如何在命令行上执行提供多个输入文件的 c 程序。
也许首先要做的是阅读一本C书,尤其是关于函数如何工作的书。无论如何,我会给你一些提示。
- 如果我想编写一个接受 x,y,z 坐标并计算距离(同上(的子例程,是否有可能......如果是这样,怎么办?
这是可能的,实际上是这样做的好方法。您可以根据需要传递任意数量的参数来运行。但是,在这种情况下,最好将指针传递给struct
。这种方式通常比传递多个参数更方便、更有效。
double calcdist( p_atom *point1, p_atom *point2 )
在该函数中,您可以使用point1->x
、point1->y
等进行计算,就像您目前使用px
、py
等一样。
- 如何通过在命令行中提供多个输入文件来执行 c 程序
可以cat
多个输入文件,然后将它们pipe
到程序中。像这样:
cat file1 file2 | ./a.out
优雅:
typedef struct {
double x;
double y;
double z;
}COORD_3D;
typedef struct atom {
COORD_3D coord;
char line[200];
int is_connected;
struct atom *next;
} p_atom;
double calc3Ddist (COORD_3D *coord1, COORD_3D *coord2)
{
double x, y, z, sqr_sum;
x = coord1->x - coord2->x;
y = coord1->y - coord2->y;
z = coord1->z - coord2->z;
sqr_sum = pow (x, 2) + pow (y, 2) + pow (z, 2);
return sqrt (sqr_sum);
}
int HowToDo(){
p_atom a, b;
int dist;
dist=calcdist( &a.coord, &b.coord);
}
更简单:
double
calcdist (p_atom *patom, p_atom *latom )
{
double x, y, z, sqr_sum;
x = patom->x - latom->x;
y = patom->y - latom->y;
z = patom->z - latom->z;
sqr_sum = pow (x, 2) + pow (y, 2) + pow (z, 2);
return sqrt (sqr_sum);
}