https://kin.naver.com/qna/detail.nhn?d1id=1&dirId=1040101&docId=312059347&page=1#answer1

[code]

# include <stdio.h>

# include <stdlib.h>

# include <time.h>

# define AND &&

# define OR ||

# define ERROR 1

# define R 7

# define C 5

typedef struct MAT {

int Matrix[R][C]; // 6x4행렬

}MAT, *ptrMat;

// =====================================================================

void _init_(MAT** p);        // func(1) : 행렬 초기화 함수 

void rndValueInput(MAT** p); // func(2) : 랜덤으로 값 입력 최댓값 : 1000

void tempPrintf(MAT** p);    // func(3) : 전체 데이터 임시 출력

void resultPrintf(MAT** p);  // func(4) : 최종결과 출력

// =====================================================================

int main(void) {

// 

ptrMat pNode = NULL;

pNode = (ptrMat)malloc(sizeof(MAT)); // 동적 할당

if (pNode == NULL) {

printf("malloc fail !!!\n");

exit(ERROR);

}

else {

// pNode != NULL

_init_(&pNode);

rndValueInput(&pNode);

//tempPrintf(&pNode);

resultPrintf(&pNode);

}

free(pNode); // 메모리 해제 

return 0;

} // end of main function

// =====================================================================

// func(1)

void _init_(MAT** p) {

int i, j; // index

// 행_

for (i = 0; i < R; i++) {

// 열_

for (j = 0; j < C; j++) {

(** p).Matrix[i][j] = 0x0;

}

}

} // end of _init_ function

// =====================================================================

// func(2)

void rndValueInput(MAT** p) {

int i, j; // index

int row_temp;

int col_temp[4] = { 0, };

// seed 값

srand((unsigned)time(NULL)); 

// 행_

for (i = 0; i < R-1; i++) {

// 열_

row_temp = 0x0;

for (j = 0; j < C-1; j++) {

// 값 입력 범위 =  1 <= N <= 1000

(** p).Matrix[i][j] = rand() % 1000 + 1;

// 행에 대한 제어

row_temp += (** p).Matrix[i][j];

// 열에 대한 제어 

col_temp[j] += (** p).Matrix[i][j];

}

(** p).Matrix[i][C - 1] = row_temp;

}

// 데이터 적재 

for (j = 0; j < C - 1; j++) {

(** p).Matrix[R - 1][j] = col_temp[j];

}

} // end of rndValueInput function 

// =====================================================================

// func(3)

void tempPrintf(MAT** p) {

int i, j; // index

// 행_

for (i = 0; i < R; i++) {

// 열_

for (j = 0; j < C; j++) {

printf("%4d", (** p).Matrix[i][j]);

if (j != C - 1) {

printf("  ");

}

}

printf("\n"); // 개행

}

} // end of tempPrintf function 

// =====================================================================

// func(4)

void resultPrintf(MAT** p) {

int i, j; // index

// 행_

for (i = 0; i < R; i++) {

// 열_

for (j = 0; j < C; j++) {

if (i != R - 1 AND j != C - 1) {

printf("%6d", (** p).Matrix[i][j]);

}

else {

// j == C-1

if (i != R - 1 OR j != C - 1) {

printf("%.2lf", (double)((** p).Matrix[i][j]) / 4);

}

}

if (j != C - 1) {

printf("  ");

}

}

printf("\n"); // 개행

}

} // end of tempPrintf function 

[/code]

'언어 > c언어' 카테고리의 다른 글

네이버 지식인 풀이  (0) 2018.11.07
네이버 지식인 풀이, c언어 숫자 거꾸로 출력  (0) 2018.11.03
네이버 지식인 풀이 링크드 리스트  (0) 2018.10.13
네이버 지식인 문제 풀이  (0) 2018.10.09
지식인 풀이  (0) 2018.10.09