可以麻煩幫我看一下程式哪裡有問題嗎...謝謝 |
尚未結案
|
56angela
一般會員 發表:12 回覆:13 積分:5 註冊:2005-10-01 發送簡訊給我 |
這是兩個多項式相加的程式
我找不出錯的地方
可以請大家幫忙一下嗎~感謝嘍 另外,想請教一下,如果是用開檔的方式讀取多項式的數值與指數,應該如何寫呢?(給予兩個已存在且寫入的檔案) 如果a的多項式為: -4X^15 + 8X^7 + 13X^0
檔案poly_a.txt內容為:
-4 15
8 7
13 0 寫入後poly_a檔案形式變為: -4 15■8 7■13 0 b的多項式為: 17X^15 - 16X^3 + 5X^1
檔案poly_b.txt內容為:
17 15
-16 3
5 1 寫入後poly_b檔案形式變為: 17 15■-16 3■5 1
#include真的希望大家的幫忙...對於開檔的部分...尤其是這種已經寫入的檔案我真的不知道該如何處理,曾試著用fscanf但還是失敗...最下策只好如以上程式所寫的...把數值跟指數直接打出來,而沒有開檔...但是還是有錯誤...> <...卻不知道哪裡有問題...所以希望有高手們幫忙解答...感激不盡 發表人 - 56angela 於 2005/11/14 20:06:15 |
justdo
高階會員 發表:2 回覆:359 積分:222 註冊:2004-08-17 發送簡訊給我 |
編譯的錯誤訊息:
[C Warning] Unit1.cpp(52): W8004 'avail' is assigned a value that is never used
[C Error] Unit1.cpp(57): E2451 Undefined symbol 'avail'
[C Error] Unit1.cpp(60): E2451 Undefined symbol 'terms'
[C Error] Unit1.cpp(87): E2451 Undefined symbol 'avail'
[C Error] Unit1.cpp(92): E2451 Undefined symbol 'terms' 錯誤訊息就如同上面寫的 avail跟terms沒有定義
你這兩個變數都在main()函式內定義,但是離開main函式後,就看不到了
因此應該把這兩個變數的宣告移到global區域去 另外,
====================================
檔案poly_a.txt內容為:
-4 15
8 7
13 0 寫入後poly_a檔案形式變為:
-4 15■8 7■13 0
====================================
是什麼意思?poly_a檔案的內容到底是哪個?? 也把你讀取的程式貼上來,讓大家幫忙看看問題在哪吧
|
56angela
一般會員 發表:12 回覆:13 積分:5 註冊:2005-10-01 發送簡訊給我 |
錯誤訊息就如同上面寫的 avail跟terms沒有定義
你這兩個變數都在main()函式內定義,但是離開main函式後,就看不到了
因此應該把這兩個變數的宣告移到global區域去 另外,
====================================
檔案poly_a.txt內容為:
-4 15
8 7
13 0 寫入後poly_a檔案形式變為:
-4 15■8 7■13 0
====================================
是什麼意思?poly_a檔案的內容到底是哪個?? 也把你讀取的程式貼上來,讓大家幫忙看看問題在哪吧
引言: 將avail的變數宣告我移到global區域了...不過該怎麼將terms的變數定義 移到global呢? 還有,這是poly_a跟poly_b的txt檔內容 謝謝你的回覆,我將檔案po上來了 [/quote] |
justdo
高階會員 發表:2 回覆:359 積分:222 註冊:2004-08-17 發送簡訊給我 |
|
56angela
一般會員 發表:12 回覆:13 積分:5 註冊:2005-10-01 發送簡訊給我 |
引言: 你的avail怎麼移過去,terms就怎麼跟著移過去呀... 還有,你的poly_b.txt檔是怎麼寫的? 引言: 我移過去了,不過還是有錯誤... 還有...poly_b的檔我有把圖放上去了... 我再貼一次好了...可能有點亂...你沒注意到 至於原文的部分...我修改過...將avail跟terms移到global... 但不知道對不對...還請指點一下...謝謝^^ 9 C:\Documents and Settings\userd\桌面\add orz.cpp parse error before `[' C:\Documents and Settings\userd\桌面\add orz.cpp [Warning] In function `int main()': 33 C:\Documents and Settings\userd\桌面\add orz.cpp `terms' undeclared (first 33 C:\Documents and Settings\userd\桌面\add orz.cpp (Each undeclared 64 C:\Documents and Settings\userd\桌面\add orz.cpp:41 empty character constant發表人 - 56angela 於 2005/11/15 23:49:17 |
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
|
RedSnow
版主 發表:79 回覆:1322 積分:845 註冊:2003-12-15 發送簡訊給我 |
56angela 妳好: 給妳兩點建議,請參考一下:
#include7 天天敲鍵盤 v 時時按滑鼠 8 |
56angela
一般會員 發表:12 回覆:13 積分:5 註冊:2005-10-01 發送簡訊給我 |
|
justdo
高階會員 發表:2 回覆:359 積分:222 註冊:2004-08-17 發送簡訊給我 |
迴圈用法錯了
for(starta=0; starta<=5; starta ) { for(startb=0; startb<=5; startb ) { fscanf(fptr1,"%d %d\n", &terms[starta].coef, &terms[starta].expon); printf("fptr1:terms[%d].coef is %d, terms[%d].expon is %d\n", starta, terms[starta].coef, starta, terms[starta].expon); fscanf(fptr2,"%d %d\n", &terms[startb].coef, &terms[startb].expon); printf("fptr2:terms[%d].coef is %d, terms[%d].expon is %d\n", startb, terms[startb].coef, startb, terms[startb].expon); } }改成 for(starta=0; starta<=2; starta ) { fscanf(fptr1,"%d %d\n", terms[starta].coef, terms[starta].expon); printf("fptr1:terms[%d].coef is %d, terms[%d].expon is %d\n", starta, terms[starta].coef, starta, terms[starta].expon); } for(starta=3; starta<=5; starta ) { fscanf(fptr2,"%d %d\n", terms[starta].coef, terms[starta].expon); printf("fptr2:terms[%d].coef is %d, terms[%d].expon is %d\n", starta, terms[starta].coef, starta, terms[starta].expon); }紅色的地方是除錯用的,會寫出你讀到的值(不過我沒實際測試,可能會不完整... ^^") 看了之後應該就知道你的問題在哪兒了 不過還是要問,你那兩個檔案到底怎麼產生的,為何會有黑色方塊存在? 發表人 - justdo 於 2005/11/16 20:52:48 |
RedSnow
版主 發表:79 回覆:1322 積分:845 註冊:2003-12-15 發送簡訊給我 |
|
56angela
一般會員 發表:12 回覆:13 積分:5 註冊:2005-10-01 發送簡訊給我 |
|
56angela
一般會員 發表:12 回覆:13 積分:5 註冊:2005-10-01 發送簡訊給我 |
引言: 有兩個問題請教一下: 引言: TO: RedSnow (1) padd函式是在做多項式相加沒錯 (2)預期輸出結果是以下兩個檔案裡的多項式相加,將a,b檔案內的多項式的係數 與指數讀出做相加,我想請教的是...該怎麼將兩個檔的係數與指數分別讀出 並做相加 -4X^15 8X^7 13X^0...a檔案 17X^15 - 16X^3 5X^1...b檔案 結果輸出 13X^15 8X^7 -16X^3 5X^1 13X^0不好意思可能我表達的不太好...不過,很謝謝你幫我想這個問題^^ 發表人 - 56angela 於 2005/11/16 23:13:34 發表人 - 56angela 於 2005/11/16 23:20:44 |
RedSnow
版主 發表:79 回覆:1322 積分:845 註冊:2003-12-15 發送簡訊給我 |
56angela 妳好: 妳讀檔的問題應該是出在資料型態未配合好,請將原先讀取資料的敘述修改如下:
fscanf(fptr1,"%f %d\n", &terms[starta].coef, &terms[starta].expon); fscanf(fptr2,"%f %d\n", &terms[startb].coef, &terms[startb].expon);但是妳為何要用兩到迴圈去讀檔案資料?看起來怪怪的,我將整個 main() 修改如下,妳參考一下吧: int main(void) { int a, b, i,starta, startb; FILE *fptr1, *fptr2; avail = 0; fptr1 = fopen("poly_a.txt","r"); fptr2 = fopen("poly_b.txt","r"); if (fptr1 != NULL && fptr2 != NULL) { puts("poly_a.txt:"); for (starta=0; starta<3; starta ) { fscanf(fptr1,"%f %d\n", &terms[starta].coef, &terms[starta].expon); printf("%.0f %d\n", terms[starta].coef, terms[starta].expon); } puts("\npoly_b.txt:"); for(startb=3; startb<6; startb ) { fscanf(fptr2,"%f %d\n", &terms[startb].coef, &terms[startb].expon); printf("%.0f %d\n", terms[startb].coef, terms[startb].expon); } fclose(fptr1); fclose(fptr2); padd(0, 2, 3, 5, &a, &b); puts("====================\n"); /* for (i=0; i<6; i ) { printf("%.0fX^%d", terms[i].coef, terms[i].expon); if (i != 2 && i != 5) { if (terms[i 1].coef >= 0.0) printf("%c", ' '); } else if (i == 2){ puts("\n"); } } */ for(i=0; i<=5; i ){ printf("%.0fX^%d", terms[i].coef, terms[i].expon); if (i != 5) { if (terms[i 1].coef >= 0.0) printf("%c", ' '); } } } puts("\n"); system("pause"); return 0; }請注意!因為未能確認妳的相關需求 (我前一篇的問題),由呼叫 padd() 函式開始以下的敘述尚有待斟酌。 7 天天敲鍵盤 v 時時按滑鼠 8 發表人 - RedSnow 於 2005/11/16 23:48:39 |
56angela
一般會員 發表:12 回覆:13 積分:5 註冊:2005-10-01 發送簡訊給我 |
|
RedSnow
版主 發表:79 回覆:1322 積分:845 註冊:2003-12-15 發送簡訊給我 |
|
56angela
一般會員 發表:12 回覆:13 積分:5 註冊:2005-10-01 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |