네이버 지식인 풀이
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 |