Report #5 - due: 4/13 다음 10*5의 희소 행렬 A, B를 고려하라. 희소 행렬을 매개변수로 전달받아 이 행렬에서 0이 아닌 원소만을 포함하는 sparse_matrix 구조체(교재 참고)를 구하여 반환하는 알고리즘 mat2sparse()를 작성하라. sparse_matrix로 표현된 2개의 희소 행렬을 전달 받아서 이들의 덧셈을 구하고, 그 결과의 행렬을 반환하는 알고리즘 add_sparse_matrix()를 작성하라. sparse_matrix로 표현된 희소 행렬 b를 전달받아서 원래의 행렬 형식으로 출력하는 알고리즘 print_sparse()를 작성하라. 다음과 같이 C 프로그램을 작성하라. (위에서 작성한 함수를 이용할 것) 희소 행렬을 표현하는 타입 sparse_matrix를 정의하라. 주어진 행렬 A, B를 이차원 배열로 선언하면서, 초기화하라. 위의 두 행렬을 sparse_matrix 타입으로 변환하라. 위에서 sparse_matrix 타입으로 변환된 두 희소 행렬 덧셈을 수행하라. 위의 연산 결과의 희소 행렬을 행렬 형식으로 출력하라. 결과를 검증하라. 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 4 5 0 0 0 6 0 0 0 0 7 5 0 0 0 6 0 0 0 0 7 0 3 0 0 0 1 0 0 0 4 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 1 0 0 0 0 1
print_sparse(sparse_matrix a) m <- a.ROWS; n <- a.COLS; term_num <- a.num; num <-0; // 항의 개수 추적 more_term <- true; for i <- 0 to m – 1 do for j <- 0 to n – 1 do o_idx <- I * n + j // 원래 행렬의 위치 인덱스 if more_term and num < term_num then // a로부터 새로운 항을 가져와야 하면 term <-get_term(a); s_idx <- term.row * n + term.col; num <- num + 1; end if if o_idx = s_idx then // 항의 위치 비교 print(i, j, term.val); more_term <- true // 새로운 항을 가져오기 위해서 else print(I,j,0); // 0의 항을 출력 if more_term then more_item <- false repeat print(‘\n’); // new line 출력 end