2011-03-24 217 views
0

謝謝!我只需將作業的右側轉換爲術語。Dynamic Arrays and structs

我必須做一個多項式的動態數組,每個多項式都有一個動態數組項。當給出一個指數和係數這個術語時,我得到一個錯誤「在{'token'之前的期望表達式」。分配數值時我做錯了什麼?

此外,有沒有一種簡單的方法來保持按指數排序的動態數組項?我只是打算循環,打印最大值,但寧願按順序存儲它們。

謝謝!

polynomialArray[index].polynomialTerm[0] = {exponent, coefficient}; // ISSUE HERE 

變化

polynomialArray[index].polynomialTerm[0] = (Term){exponent, coefficient}; 

回答

1

如果這是C99,我認爲你需要

polynomialArray[index].polynomialTerm[0] = (Term){exponent, coefficient}; 
2
polynomialArray[index].polynomialTerm[0]->exponent = exponent; 
polynomialArray[index].polynomialTerm[0]->coefficient = coefficient; 
0

(僅申報期間)你不能像屬性,價值觀。

你應該分配是這樣的:

polynomialArray[index].polynomialTerm[0].exponent = exponent; 
polynomialArray[index].polynomialTerm[0].coefficient = coefficient; 

關於其他問題,你真的不需要斷言這裏。如果指針malloc分配給它,指針將不爲NULL。如果不是,最好是NULL,所以你可以測試malloc是否失敗。

要訂購它,您將需要使用某種排序算法進行訂購。我認爲,如果你正在尋找一個簡單的方法,你的方式很好。如果需要訂購(如實時應用程序)至關重要,則需要重新考慮該方法。如果沒有,保持並繼續前進!

保重, 貝喬

2

有你的代碼在這裏是一個效率的問題:

if(index > (sizeof(polynomialArray)/sizeof(Polynomial))) 
     polynomialArray = (Polynomial*)realloc(polynomialArray, index * sizeof(Polynomial)); 

polynomialArray是一個指針,我覺得的sizeof(polynomialArray)將永遠是4或8(64位系統)。所以上面如果語句總是如此,只要指數大於0

+0

良好的漁獲物。當且僅當'X'是一個數組時,'sizeof(X)'給出了原作者所期望的答案。 – 2011-03-24 16:18:18