네이버 풀이

언어/c언어2018. 11. 10. 17:36

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