2011-03-24 59 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