네이버 풀이

언어/c언어2018. 12. 1. 18:38

https://kin.naver.com/qna/detail.nhn?d1id=1&dirId=1040101&docId=315609430

# include <stdio.h>

# include <stdlib.h>

# include <time.h>

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

typedef struct {

unsigned int size;

int** mat;

}Matrix;

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

void _init_(Matrix* param);        // func (1)

void dataInsert(Matrix* param);    // func (2)

void exchangeMat(Matrix* param);   // func (3)

void dataPrintf(Matrix* param);    // func (4)

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

int main(void) {                   // Main function 

Matrix node;

_init_(&node);

dataInsert(&node);

printf("before \n");

dataPrintf(&node);

exchangeMat(&node);

printf("after  \n");

dataPrintf(&node);

return 0;

} // end of main function

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

void _init_(Matrix* param) {       // func (1)

unsigned int i, j; // index

param->mat = NULL;

param->size = 0;

scanf("%d", &param->size);

param->mat = (int**)malloc(sizeof(int)*param->size);

for (i = 0x0; i < param->size; i++) {

*(param->mat + i) = (int*)malloc(sizeof(int)*param->size);

}

// 배열 초기화

for (i = 0x0; i < param->size; i++) {

for (j = 0x0; j < param->size; j++) {

(param)->mat[i][j] = 0x0;

}

}

} // end of _init_ function 

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

void dataInsert(Matrix* param) {   // func (2)

srand((unsigned)time(NULL));

unsigned int i, j; // index

for (i = 0x0; i < param->size; i++) {

for (j = 0x0; j < param->size; j++) {

(param)->mat[i][j] = rand() % 30 + 1; // 1, 2, 3, ..., 30

}

}

} // end of dataInsert function

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

void exchangeMat(Matrix* param) {  // func (3)

unsigned int i, j; // index

int tmp = 0x0;

unsigned int r = 0;

for (i = 0x0; i < param->size; i++) {

for (j = r; j < param->size; j++) {

if (i != j) {

tmp = (param)->mat[i][j];

(param)->mat[i][j] = (param)->mat[j][i];

(param)->mat[j][i] = tmp;

} // endif

} // endfor

r++;

} // endfor

} // end of exchangeMat function 

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

void dataPrintf(Matrix* param) {   // func (4)

unsigned int i, j; // index

for (i = 0x0; i < param->size; i++) {

for (j = 0x0; j < param->size; j++) {

printf("%02d", param->mat[i][j]);

if (j != param->size - 1) {

printf(" ");

}

else {

printf("\n");

}

} // endfor

} // endfor

} // end of dataPrintf function 

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

네이버 풀이  (0) 2019.05.18
c언어 네이버 풀이 중첩 for문을 사용해서 3을 입력하면  (0) 2019.05.06
네이버 문제 풀이 - 최대공약수  (0) 2018.11.28
네이버 지식이 풀이  (0) 2018.11.28
더블릿 문제  (0) 2018.11.27