A와 B라는 txt파일에 담겨있는 인자를 다항식으로 인식하여 < 계수, 지수>의 방식으로 받아서 <div>새로운 다항식 D라는 식에 A+B의 값을 넣은뒤에 다시 표시하는 프로그램인데요...</div> <div><br></div> <div>제가 멍청해선지 함수 인자 받는 부분이 잘 모르겠네요</div> <div><br></div> <div>다항식 struct : polynomial 이라는 구조체를 설정하고</div> <div>다항식을 담을 polynomial 형 배열 Terms[]를 설정했습니다.</div> <div><br></div> <div>이제 이거를 읽고(readPoly) 더하고(padd) 그 값을 표현(printPoly)하는 프로그램입니다.</div> <div><br></div> <div>근데 제가 잘 모르겠는게..</div> <div>디버깅을 하면서 한칸씩 따라가니깐</div> <div><br></div> <div>readPoly 식에서</div> <div>array[avail].coef랑 array[avail].expon에는 값이 제대로 들어가는 걸로 보입니다.</div> <div>근데 제가 이 array를 받는 인자로 (Terms)를 집어넣으면</div> <div>이게 포인터로 Terms[avail].coef, Terms[avail].expon으로 들어가는게 아닌건가요?</div> <div><br></div> <div>디버깅시에는 Terms[0].coef, Terms[0].expon은 다 알수없는 값으로 나오네요...</div> <div>array[0].coef에는 잘 들어가는데...</div> <div><br></div> <div>제가 도대체 뭘 모르는 걸까요.. 고치고 싶은데.. 고칠수가 ㅇ벗어요 ㅠㅠ.ㅠ.ㅠ.ㅠ.ㅠ</div> <div>밑에는 프로그램 코드 첨부해볼게요.. </div> <div><br></div> <div>함수파트 알았다고 생각하는데 맨날 돌려보면 안된데 ㅠ.ㅠ</div> <div><br></div> <div><br></div> <div><br></div> <div><br></div> <div><div>#define _CRT_SECURE_NO_WARNINGS</div> <div>#include <stdio.h></div> <div>#define MAX_TERMS 100</div> <div><br></div> <div>int starta = 0, startb = 0, finisha = 0, finishb = 0, avail = 0;</div> <div><br></div> <div>typedef struct {</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>int coef;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>int expon;</div> <div>} polynomial;</div> <div><br></div> <div>void readPoly(int* startd, int* finishd, polynomial array[]) {</div> <div><br></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>FILE *fp = fopen("A.txt", "r");</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>int number=0, temp, count = 1;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>int i = 0;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span></div> <div><br></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>while (~fscanf(fp, "%d", &temp)) number++;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>fclose(fp);</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>finisha = starta + number;</div> <div><br></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>fp = fopen("A.txt", "r");</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>for(i = 0; i < number;i++){</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>if (count % 2 == 1) {</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>fscanf(fp, "%d", &array[avail].coef);</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>count++;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>}</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>else {</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>fscanf(fp, "%d", &array[avail].expon);</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>count++;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>avail++;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>}</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>}</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>fclose(fp);</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>number = 0;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>startb = finisha + 1;</div> <div><br></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>fp = fopen("B.txt", "r");</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>while (fscanf(fp,"%d",&temp)) number++;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>fclose(fp);</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>finishb = startb + number;</div> <div><br></div> <div><br></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>fp = fopen("B.txt", "r");</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>for (i = 0; i < number;i++){</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>if (count % 2 == 1) {</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>fscanf(fp, "%d", &array[avail].coef);</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>count++;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>}</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>else {</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>fscanf(fp, "%d", &array[avail].expon);</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>count++;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>avail++;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>}</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>}</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>fclose(fp);</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span></div> <div>}</div> <div><br></div> <div>int COMPARE(int num1, int num2) {</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>if (num1>num2)</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>return -1;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>if (num1 == num2)</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>return 0;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>if (num1<num2)</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>return 1;</div> <div>}</div> <div><br></div> <div><br></div> <div>void attatch(int coef, int expon, polynomial array[]) {</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>array[avail].coef = coef;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>array[avail].expon = expon;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>avail++;</div> <div>}</div> <div><br></div> <div><br></div> <div>void padd(int* startd, int* finishd, polynomial array[]) {</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>int coefficient;</div> <div><br></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>*startd = avail;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>while (starta <= finisha && startb <= finishb) </div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>switch (COMPARE(array[starta].expon, array[startb].expon)) {</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>case - 1 :</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>attatch(array[starta].coef, array[starta].expon, array);</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>starta++;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>break;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>case 0 :</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>coefficient = array[starta].coef + array[startb].coef;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>attatch(coefficient, array[starta].expon, array);</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>starta++, startb++;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>break;</div> <div><br></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>case 1 :</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>attatch(array[startb].coef, array[startb].expon, array);</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>startb++;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>break;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>}</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>*finishd = avail - 1;</div> <div>}</div> <div><br></div> <div><br></div> <div>void printPoly(polynomial array[],int* startd, int* finishd) {</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>while (*startd <= *finishd) {</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>printf("( ");</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>printf("%d", array[*startd].coef);</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>printf(" , ");</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>printf("%d", array[*startd].expon);</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>printf(" )\n");</div> <div><br></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>*startd=*startd+1;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>}</div> <div><br></div> <div><br></div> <div>}</div> <div><br></div> <div><br></div> <div>void main() {</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>polynomial Terms[MAX_TERMS];</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>int startd1 = 0, finishd1 = 0;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>int* startd=&startd1;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>int* finishd=&finishd1;</div> <div><br></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>readPoly(startd, finishd,Terms);</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>padd(startd, finishd, Terms);</div> <div><br></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>printPoly(Terms,startd, finishd);</div> <div><br></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>getchar();</div> <div>}</div></div>
댓글 분란 또는 분쟁 때문에 전체 댓글이 블라인드 처리되었습니다.