그러니까, 기본적으로 다항식의 곱셈을 하는 프로그램인데,
링크드리스트를 써야하고, 배열을 사용하면 안됩니다.
input.txt에 있는 데이터 값을 받아서 결과물을 output.txt로 내는 것입니다.
밑에 있는 것으로는
6 5 4 3 // 첫번째 다항식. 6x^5 + 4x^3
8 7 6 5 // 두번째 다항식. 8x^7 + 6x^5
은 연산이 되지만
8 7 6 5 4 3 2 1 // 첫번째 다항식, 8x^7 + 6x^5 + 4x^3 + 2x^1
9 6 4 3 // 두번째 다항식, 9x^6 + 4x^3
은 불가능합니다.
typedef struct poly_STnode { /*<--poly node 구조체-->*/
int coefficient;
int exponent;
struct poly_STnode *link; /*<--링크 필드 설정-->*/
} poly_STnode;
typedef struct { /*<--헤더 구성 구조체-->*/
poly_STnode *head;
} poly_linkHead;
/*<-- poly list 생성 -->*/
poly_linkHead *polySL() {
poly_linkHead *P;
P = (poly_linkHead *)malloc(sizeof(poly_linkHead));
P->head = NULL;
return P;
}
.
.
.
.
.
등등등 해서 링크드 리스트를 구성하고요.
그 후에 메인에서 값을 받아서 할려고 했는데..
int main() {
char *fname_i = "input.txt";
FILE *input_d;
if ((input_d = fopen(fname_i,"r"))==NULL){
printf("파일이 열리지 않았습니다!!\n");
exit(1);
}
/*<--곱셈 시작-->*/
int c1 = 0, c2 = 0, c3 = 0, c4 = 0;
int e1 = 0, e2 = 0, e3 = 0, e4 = 0;
poly_linkHead *P1;
poly_linkHead *P2;
P1 = polySL();
P2 = polySL();
/*<--첫번째 다항식-->*/
fscanf(input_d,"%d %d %d %d",&c1,&e1,&c2,&e2);
last_data_add(P1,c1,e1); //last_data_add();에 다항식 인자를 넣어서 계산가능
last_data_add(P1,c2,e2); //링크드 리스트로 구성되어 있습니다.
/*<--두번째 다항식-->*/
fscanf(input_d,"\n%d %d %d %d",&c3,&e3,&c4,&e4);
last_data_add(P2,c3,e3); //두번째도 마찬가지
last_data_add(P2,c4,e4);
fclose(input_d);
/*<--값출력-->*/
printf("다항식의 곱셈 연산 : \n");
printList(P1); // 첫번째 다항식 받은값 출력
printList(P2); // 두번째 다항식 받은값 출력
printf("-----------------------------------\n");
fileOUTPUT(MULTIPLICATION_POLY(P1,P2));
//MULTIPLICATION_POLY(P1,P2)는 첫번째와 두번째 다항식의 곱을 구하는 함수
//그걸 파일로 아웃풋을 내기 위한 fileOUTPUT(); 출력함수
}
이렇게 되있습니다.
저가 실은 fscanf를 제대로 배우질 못해서-_-; 많이 어렵네요..
어떻게 하면 더 많은 인자를 받을 수 있을까요?
fscanf로 한줄씩 읽어서(즉 다항식 하나씩) 링크드 리스트에 저장하고,
연산을 하고 싶은데요.. 어떻게 할까요;?