谢谢!我只需要将作业的右侧强加给Term。
我必须制作一个动态的多项式数组,每个多项式都有一个动态的术语数组。当给出一个指数和系数时,我得到一个错误“'{'token'之前的预期表达式。在分配值时我做错了什么?
此外,是否有一种简单的方法可以保持按指数排序的动态数组?我只是计划循环,打印最大值,但更愿意按顺序存储它们。
谢谢!
polynomialArray[index].polynomialTerm[0] = {exponent, coefficient}; // ISSUE HERE
更改为
polynomialArray[index].polynomialTerm[0] = (Term){exponent, coefficient};
答案 0 :(得分:2)
polynomialArray[index].polynomialTerm[0]->exponent = exponent;
polynomialArray[index].polynomialTerm[0]->coefficient = coefficient;
答案 1 :(得分:2)
您的代码中存在效率问题:
if(index > (sizeof(polynomialArray)/sizeof(Polynomial)))
polynomialArray = (Polynomial*)realloc(polynomialArray, index * sizeof(Polynomial));
因为 polynomialArray 是指针,我认为 sizeof(polynomialArray)总是4或8(64位系统)。因此,只要 index 大于0,上述 if 语句将始终为true。
答案 2 :(得分:1)
如果这是C99,我认为你需要
polynomialArray[index].polynomialTerm[0] = (Term){exponent, coefficient};
答案 3 :(得分:0)
您不能将此类值赋值(仅在声明期间)。
您应该这样分配:
polynomialArray[index].polynomialTerm[0].exponent = exponent;
polynomialArray[index].polynomialTerm[0].coefficient = coefficient;
关于另一个问题,你真的不需要在这里断言。如果指针具有分配给它的值malloc,则指针不会为NULL。如果没有,最好是NULL,所以你可以测试malloc是否失败。
要订购,您需要使用某种排序算法进行订购。我认为,如果你正在寻找一种简单的方法,你做的方式很好。如果要订购(如实时应用程序)至关重要,那么您需要重新考虑该方法。如果没有,请保持并继续前进!
保重, 贝乔