读取多项式
Reading polynomial
你好,我在读取我创建的多项式时遇到了问题。我必须实施一些操作,但我在阅读阶段遇到问题,我没有找到任何解决方案。
错误是那些:
||=== Build: Debug in Big HW (compiler: GNU GCC Compiler) ===|
C:\Facultate Personal\DSA\Big HW\big_hw.cpp||In instantiation of 'void Polynomial<T>::readP() [with T = int]':|
C:\Facultate Personal\DSA\Big HW\big_hw.cpp|58|required from here|
C:\Facultate Personal\DSA\Big HW\big_hw.cpp|31|error: no matching function for call to 'Queue<int>::enqueue(term&)'|
C:\Facultate Personal\DSA\Big HW\big_hw.cpp|31|note: candidate is:|
C:\Facultate Personal\DSA\Big HW\queue.h|17|note: void Queue<T>::enqueue(T) [with T = int]|
C:\Facultate Personal\DSA\Big HW\queue.h|17|note: no known conversion for argument 1 from 'term' to 'int'|
C:\Facultate Personal\DSA\Big HW\big_hw.cpp||In instantiation of 'void Polynomial<T>::invert() [with T = int]':|
C:\Facultate Personal\DSA\Big HW\big_hw.cpp|59|required from here|
C:\Facultate Personal\DSA\Big HW\big_hw.cpp|50|error: no match for 'operator[]' (operand types are 'Queue<int>' and 'int')|
C:\Facultate Personal\DSA\Big HW\big_hw.cpp|50|error: no match for 'operator[]' (operand types are 'Queue<int>' and 'int')|
C:\Facultate Personal\DSA\Big HW\big_hw.cpp||In instantiation of 'void Polynomial<T>::computeX(T) [with T = int]':|
C:\Facultate Personal\DSA\Big HW\big_hw.cpp|60|required from here|
C:\Facultate Personal\DSA\Big HW\big_hw.cpp|42|error: no match for 'operator[]' (operand types are 'Queue<int>' and 'int')|
C:\Facultate Personal\DSA\Big HW\big_hw.cpp|42|error: no match for 'operator[]' (operand types are 'Queue<int>' and 'int')|
C:\Facultate Personal\DSA\Big HW\big_hw.cpp|42|error: no match for 'operator[]' (operand types are 'Stack<int>' and 'int')|
C:\Facultate Personal\DSA\Big HW\big_hw.cpp|42|error: no match for 'operator[]' (operand types are 'Stack<int>' and 'int')|
||=== Build failed: 7 error(s), 6 warning(s) (0 minute(s), 0 second(s)) ===|
读取函数和main:
#include <iostream>
#include <math.h>
#include "queue.h"
#include "stack.h"
using namespace std;
struct term{
int coef;
int expo;};
template<typename T> class Polynomial{
private:
T coef;
T expo;
public:
Queue<T> polin;
int n;
struct term *p;
Polynomial(){}
~Polynomial(){}
void readP()
{
cout<<"Please insert the maximum grade of the polynomial: "; cin>>n;
for(int i=0;i<=n;i++)
{
cout<<"Please insert the coefficient for x^"<<(n-i)<<": "; cin>>p[i].coef;
p[i].expo=n-i;
polin.enqueue(p[i]);
}
cout<<endl;
}
};
int main()
{
Polynomial<int> polin;
polin.readP();
polin.invert();
polin.computeX(2);
return 0;
}
入队函数是这样的:
void enqueue(T x) {
if (size >= NMAX) {
cout << "The queue is FULL" << endl;
return;
}
queueArray[tail] = x;
tail=(tail+1)%NMAX;
size--;
}
我做错了什么?
这些错误很容易解释:
error: no matching function for call to 'Queue<int>::enqueue(term&)
您正在将一个术语对象传递到需要 T
(=int) 的入队函数中。也许你打算通过 p[i].coef
或 p[i].expo
?
error: no match for 'operator[]' (operand types are 'Queue<int>' and 'int')
看起来 Queue
没有索引运算符。
编辑:
我也注意到了一些别的东西。当您读取 term
时,您将它们放入 struct term *p
变量中,但使用 p[i]
访问它。这意味着如果 i > 0 你处于未定义的行为区域。
我的建议是摆脱 p
变量并像这样编写 for 循环:
for (int i = 0; i <= n; i++)
{
term t;
std::cout << "Please insert the coefficient for x^" << (n - i) << ": ";
std::cin >> t.coef;
t.expo = n - i;
polin.enqueue(t);
}
你好,我在读取我创建的多项式时遇到了问题。我必须实施一些操作,但我在阅读阶段遇到问题,我没有找到任何解决方案。 错误是那些:
||=== Build: Debug in Big HW (compiler: GNU GCC Compiler) ===|
C:\Facultate Personal\DSA\Big HW\big_hw.cpp||In instantiation of 'void Polynomial<T>::readP() [with T = int]':|
C:\Facultate Personal\DSA\Big HW\big_hw.cpp|58|required from here|
C:\Facultate Personal\DSA\Big HW\big_hw.cpp|31|error: no matching function for call to 'Queue<int>::enqueue(term&)'|
C:\Facultate Personal\DSA\Big HW\big_hw.cpp|31|note: candidate is:|
C:\Facultate Personal\DSA\Big HW\queue.h|17|note: void Queue<T>::enqueue(T) [with T = int]|
C:\Facultate Personal\DSA\Big HW\queue.h|17|note: no known conversion for argument 1 from 'term' to 'int'|
C:\Facultate Personal\DSA\Big HW\big_hw.cpp||In instantiation of 'void Polynomial<T>::invert() [with T = int]':|
C:\Facultate Personal\DSA\Big HW\big_hw.cpp|59|required from here|
C:\Facultate Personal\DSA\Big HW\big_hw.cpp|50|error: no match for 'operator[]' (operand types are 'Queue<int>' and 'int')|
C:\Facultate Personal\DSA\Big HW\big_hw.cpp|50|error: no match for 'operator[]' (operand types are 'Queue<int>' and 'int')|
C:\Facultate Personal\DSA\Big HW\big_hw.cpp||In instantiation of 'void Polynomial<T>::computeX(T) [with T = int]':|
C:\Facultate Personal\DSA\Big HW\big_hw.cpp|60|required from here|
C:\Facultate Personal\DSA\Big HW\big_hw.cpp|42|error: no match for 'operator[]' (operand types are 'Queue<int>' and 'int')|
C:\Facultate Personal\DSA\Big HW\big_hw.cpp|42|error: no match for 'operator[]' (operand types are 'Queue<int>' and 'int')|
C:\Facultate Personal\DSA\Big HW\big_hw.cpp|42|error: no match for 'operator[]' (operand types are 'Stack<int>' and 'int')|
C:\Facultate Personal\DSA\Big HW\big_hw.cpp|42|error: no match for 'operator[]' (operand types are 'Stack<int>' and 'int')|
||=== Build failed: 7 error(s), 6 warning(s) (0 minute(s), 0 second(s)) ===|
读取函数和main:
#include <iostream>
#include <math.h>
#include "queue.h"
#include "stack.h"
using namespace std;
struct term{
int coef;
int expo;};
template<typename T> class Polynomial{
private:
T coef;
T expo;
public:
Queue<T> polin;
int n;
struct term *p;
Polynomial(){}
~Polynomial(){}
void readP()
{
cout<<"Please insert the maximum grade of the polynomial: "; cin>>n;
for(int i=0;i<=n;i++)
{
cout<<"Please insert the coefficient for x^"<<(n-i)<<": "; cin>>p[i].coef;
p[i].expo=n-i;
polin.enqueue(p[i]);
}
cout<<endl;
}
};
int main()
{
Polynomial<int> polin;
polin.readP();
polin.invert();
polin.computeX(2);
return 0;
}
入队函数是这样的:
void enqueue(T x) {
if (size >= NMAX) {
cout << "The queue is FULL" << endl;
return;
}
queueArray[tail] = x;
tail=(tail+1)%NMAX;
size--;
}
我做错了什么?
这些错误很容易解释:
error: no matching function for call to 'Queue<int>::enqueue(term&)
您正在将一个术语对象传递到需要 T
(=int) 的入队函数中。也许你打算通过 p[i].coef
或 p[i].expo
?
error: no match for 'operator[]' (operand types are 'Queue<int>' and 'int')
看起来 Queue
没有索引运算符。
编辑:
我也注意到了一些别的东西。当您读取 term
时,您将它们放入 struct term *p
变量中,但使用 p[i]
访问它。这意味着如果 i > 0 你处于未定义的行为区域。
我的建议是摆脱 p
变量并像这样编写 for 循环:
for (int i = 0; i <= n; i++)
{
term t;
std::cout << "Please insert the coefficient for x^" << (n - i) << ": ";
std::cin >> t.coef;
t.expo = n - i;
polin.enqueue(t);
}