희소행렬의 곱셈인데 도무지 모르겠습니다 ㅠㅠ
치리
질문 제목 : 희소행렬의 곱셈 프로그램입니다질문 요약 :1.실행 후 오류를 분석하라는데 어디가 틀린지 감도 안오네요
어디가 틀린지 가르쳐주시구 수정 좀해주세요(오타가 있을수도있는데 오타수정이 중요한게아니라 이 프로그램이
왜 실행이 안되는지를 알아야합니다)질문 내용 :
void mmult(term a[], term b[], term d[])
{// a, b: 입력, d: 출력, d = a * b
int i, j, column, totald = 0;
int rows_a = a[0].row, cols_a = a[0].col, totala = a[0].value;
int cols_b = b[0].col, totalb = b[0].value;
int row_begin = 1, row = a[1].row, sum = 0; // row: a의 현재 행
term new_b[max_terms];
if (cols_a != b[0].row) {// a의 열의 수와 b의 행의 수는 동일
fpritf(stderr, “incompatible matricses\n”); exit(1);
}
fast_transpose(b, new_b);
// 경계 조건을 설정
a[totala+1].row = rows_a;
new_b[totalb+1].row = cols_b;
new_b[totalb+1].col = 0;
for (i = 1; i = totala; ) {
column = new_b[1].row;// b의 현재 열
for (j = 1; j = totalb + 1; ) {
// a의 현재 행과 b의 현재 열에 대해 곱셈 수행
if (a[i].row != row) { // a의 현재 행을 벗어남.
storesum(d, &totald, row, column, &sum);
i = row_begin;// b는 다음 열로. a는 원 위치로.
for (; new_b[j].row == cloumn; j++) ;
column = new_b[j].row;
}
else if (new_b[j].row != column) { // b의 현재 열을 벗어남.
storesum(d, &totald, row, column, &sum);
i = row_begin;// a는 원 위치
column = new_b[j].row // b는 다음 열로.
}
else switch (compare(a[i].col, new_b[j].col)){
case -1: // a[i].col new_b[j].col. a 증가
i++;break;
case 0: // 계산 후, a와 b를 모두 진행
sum += (a[i++].value * new_b[j++].value); break;
case 1: // a[i].col new_b[j].col. b 증가
j++;
}
}
for (; a[i].row == row; i++) ;// b의 모든 원소를 처리한 후,
row_begin = i;row = a[i].row;// a의 현재 행을 다음 행으로.
} /* end of for i = totala */
d[0].row = rows_a;
d[0].col = cols_b; d[0].value = totald;
}
void storesum(term d[], int *totald, int row, int column, int *sum)
{
/* sum이 0이 아니면, d 배열의 *totald+1 위치에 row, column 값과 함께 저장 */
if (*sum)
if (*totald max_terms) {
d[++*totald].row = row;
d[*totald].col = column;
d[*totald].value = *sum;
*sum = 0;
}
else {
fprintf(stderr, “numbers of terms in product
exceeds %d\n”, max_terms);
exit(1);
}
}
번호 | 제 목 | 글쓴이 | 날짜 |
---|---|---|---|
2692343 | scnaf에 자꾸 선언을 참조하라는데;; (8) | 도래 | 2025-04-22 |
2692282 | 도스상에서 생성된 exe파일에 press~ 뜨게 하기 (4) | 회사원 | 2025-04-21 |
2692256 | scanf("%*c"); ㅠㅠ 고수님들 | 거북이 | 2025-04-21 |
2692230 | 하노이탑 질문입니다. (1) | 미쁘다 | 2025-04-21 |
2692210 | 정보 올림피아드 문제인데.. 풀이 과정이 궁금합니다.(재귀함수) (5) | 물티슈 | 2025-04-20 |
2692144 | C언어와 리눅스에 대한 질문입니다. | 싴흐한세여니 | 2025-04-20 |
2692114 | 컨텍스트 스위칭하는데 걸리는 시간 측정.. | YourWay | 2025-04-19 |
2692086 | 간접참조 연산자, 증감연산자 질문이용! (2) | 블랙캣 | 2025-04-19 |
2692056 | 주석좀 달아주세요. 몇개적엇는데 몇개만달아주세요. (2) | DevilsTears | 2025-04-19 |
2691978 | 진수 쉽게 이해하는법... (3) | 지지않는 | 2025-04-18 |
2691949 | getchar() 한 문자를 입력받는 함수 질문 | 채꽃 | 2025-04-18 |
2691919 | 배열 정렬 및 합치기 질문입니다. | 사과 | 2025-04-18 |
2691845 | c언어왕초보 질문이 있습니다........ | 루나 | 2025-04-17 |
2691815 | void add(int num); 함수... (4) | 살랑살랑 | 2025-04-17 |
2691756 | 명령 프롬프트 스크롤바가 없어요 | 두메꽃 | 2025-04-16 |
2691725 | 자료구조에 관련해서 질문이 있어 글을 올립니다. | 누리알찬 | 2025-04-16 |
2691697 | if 문에서 구조체 배열에 저장되있던 문자열 검사하는 법 ? (2) | 민트맛사탕 | 2025-04-16 |
2691678 | C언어 함수 질문이요~!!! | 연보라 | 2025-04-15 |
2691650 | 반복문 | 돋가이 | 2025-04-15 |
2691618 | 링크드리스트 개념 질문이예요 (3) | 맨마루 | 2025-04-15 |