-
반응형12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091#include <stdlib.h>#include <stdio.h>#include <time.h>#define NUM_OF_MEMBERS 15 // sns 가입자의 수// 함수 원형void print_links(int data[][NUM_OF_MEMBERS] );void matrix_multiplication(int data[][NUM_OF_MEMBERS], int result[][NUM_OF_MEMBERS] );int main(void) {int link_data[NUM_OF_MEMBERS][NUM_OF_MEMBERS] = { 0 }; //최초 link matrix 1촌의 matrixint link_result[NUM_OF_MEMBERS][NUM_OF_MEMBERS] = { 0 }; //2촌까지의 관계가 표시된 matrixint i = 0;int j = 0;int num_of_steps = 0;int ALL_ONES = 0;//srand(100); // 같은 결과를 얻기위해서 일단 씨드를 100으로 설정(나중에는 주석처리해서 실행)srand( (unsigned int)time(NULL) );// link_data 값 넣기: 자신은 모두 1촌이다for(i = 0; i<NUM_OF_MEMBERS; i++ ){link_data[i][i] = 1; //i와 i의 관계는 1촌. 즉 1로 표시.}// link_data 값 넣기: random하게 수를 발생시켜서 1촌 친구를 설정한다.for(i = 0; i<NUM_OF_MEMBERS; i++ ) //각 user마다 대락 4명의 친구가 있다고 가정.{j=0;while ( j<2 ) //i가 두 개의 링크를 연결하고 i가 아닌 다른 user가 i와 연결{int new_link = rand()%NUM_OF_MEMBERS;if( new_link != i ){link_data[i][new_link] = 1; //i와 new_link가 1촌이면link_data[new_link][i] = 1; //new_linke와 i도 1촌.j++;}}}printf("=================================================================\n");printf("Friends matrix\n");printf("=================================================================\n");print_links(link_data); //최초 1촌 관계 출력matrix_multiplication(link_data, link_result);printf("=================================================================\n");printf("Friends of friends matrix\n");printf("=================================================================\n");print_links(link_result); // 계산된 2촌까지의 관계 출력}void print_links(int data[][NUM_OF_MEMBERS]){int i, j;for (i = 0; i < NUM_OF_MEMBERS; i++){for (j = 0; j < NUM_OF_MEMBERS; j++){printf("%5d", data[i][j]);}printf("\n");}}void matrix_multiplication(int data[][NUM_OF_MEMBERS], int result[][NUM_OF_MEMBERS]){int i, j, n;for (i = 0; i < NUM_OF_MEMBERS; i++){for (j = 0; j < NUM_OF_MEMBERS; j++){if (data[i][j] == 1){result[i][j] = 1;for (n = 0; n < NUM_OF_MEMBERS; n++)if (data[j][n] == 1)result[i][n] = 1;}}}}
cs 결과:
반응형'코딩 > C언어' 카테고리의 다른 글
두 문자열 결합 (정렬이 되어있다고 가정) (0) 2019.03.21 문자열 거꾸로 출력 (0) 2019.03.19 피보나치 수열 계산 (재귀함수) (0) 2019.03.18 1부터 입력된 수까지의 합 (0) 2019.03.18 실수 계산 (두 수의 합 + 10) (0) 2019.03.18