https://kin.naver.com/qna/detail.nhn?d1id=1&dirId=1040101&docId=314071036&viewType=original
# include <stdio.h>
# include <stdlib.h>
# include <math.h>
//=====================
typedef struct {
double x_coor;
double y_coor;
double z_coor;
}Coord, *ptrCoord;
// =============================
ptrCoord genNode(); // func (1)
void init(Coord**); // func (2)
void OnePrintf(Coord**); // func (3)
void DotDistance(Coord**);// func (4)
double Calc(Coord*, Coord*);//func (5)
// =============================
void main(void) { // main function
ptrCoord coodNode = NULL;
coodNode = genNode();
if (coodNode == NULL) {
printf("malloc error ... !!!\n");
exit(1);
}
init(&coodNode);
OnePrintf(&coodNode);
DotDistance(&coodNode);
// memory 해제
free(coodNode);
} // end of main function
// =============================
ptrCoord genNode() { // func (1)
ptrCoord newNode = NULL;
newNode = (ptrCoord)malloc(sizeof(Coord) * 4);
return newNode;
} // end of genNode function
// =============================
void init(Coord** param) { // func (2)
int i, j; // index
double tmp[][3] = {
{ 00.510, 7.620, 15.230},
{ 04.320, 4.990, 07.190},
{ 06.780, 5.230, 02.690},
{ 12.430, 1.120, 23.110} }; // 4x3 행렬
for (i = 0; i < 4; i++) {
j = 0x0;
((*param) + i)->x_coor = tmp[i][j++]; // x좌표
((*param) + i)->y_coor = tmp[i][j++]; // y좌표
((*param) + i)->z_coor = tmp[i][j]; // z좌표
}
} // end of init function
// =============================
void OnePrintf(Coord** param) { // func (3)
int i; // index
for (i = 0; i < 4; i++)
printf("%d번째 점의 : x : %0.3lf, y : %0.3lf, z : %0.3lf\n", i+1,
((*param) + i)->x_coor, ((*param) + i)->y_coor, ((*param) + i)->z_coor);
printf("\n");
} // end of OnePrintf function
// =============================
void DotDistance(Coord** param) { // func (4)
int i, j; // index
double result = 0.;
int flag = 0;
for (i = 0; i < 4; i++) {
for (j = 0; j < 4; j++) {
if (i != j) {
printf("%d번째 점과 %d번째 점 사이의 거리는 : ", i+1, j+1);
result = Calc(((*param) + i), ((*param) + j));
printf("%0.3lf\n", result);
flag = 1;
}
}
if (flag) {
printf("\n");
flag = 0;
}
}
} // end of DotDistance function
// =============================
double Calc(Coord* param1, Coord* param2) {
double retDouble = 0.;
retDouble = \
sqrt((pow(param1->x_coor - param2->x_coor, 2.0) +
pow(param1->y_coor - param2->y_coor, 2.0) +
pow(param1->z_coor - param2->z_coor, 2.0)), 2.0);
return retDouble;
} // end of Calc function
'언어 > c언어' 카테고리의 다른 글
네이버 지식인 답변 (0) | 2018.11.12 |
---|---|
네이버 지식인 풀이 (0) | 2018.11.10 |
네이버 지식인 풀이 (0) | 2018.11.07 |
네이버 지식인 풀이, c언어 숫자 거꾸로 출력 (0) | 2018.11.03 |
네이버 지식인 풀이 (0) | 2018.10.14 |