标题:怎么是报错:subscript requires array or pointer type?
只看楼主
leathe
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2006-3-5
 问题点数:0 回复次数:4 
怎么是报错:subscript requires array or pointer type?
x=pow(t[i]-t,3)*dx[i-1]/pow(h[i],2)
-pow(t-t[i-1],2)*(t[i]-t)*dx[i]/pow(h[i],2)
+pow(t[i]-t,2)*(2(t-t[i-1])+h[i])*poix[i-1]/pow(h[i],3)
+pow(t-t[i-1],2)*(2(t[i]-t)+h[i])*poix[i]/pow(h[i],3);


在编译的时候怎么还是说:subscript requires array or pointer type
t[i],h[i],dx[i-1],poix[i-1]我已经定义为全局变量,x,t为局部变量
搜索更多相关主题的帖子: array pointer requires subscript type 
2006-03-05 20:24
jdytz
Rank: 2
等 级:新手上路
威 望:3
帖 子:104
专家分:0
注 册:2005-4-24
得分:0 
how define?

``` 奔放潇洒活着我的自由
2006-03-05 20:33
leathe
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2006-3-5
得分:0 
定义是这样的!

//全局变量及其初始化
const int n=360; //输入型值点的个数
COLORREF colb; //背景颜色变量
double HI,poix[n],poiy[n],t[n],h[n],dx[n],dy[n];
int xz0; //线的粗细变量
CSpline1View::CSpline1View()
{
// TODO: add construction code here
int i;
for(i=0;i<n;i++)
{
poix[i]=i;
poiy[i]=i;
t[i]=0;
h[i]=0;
dx[i]=0;
dy[i]=0;
}
colb=RGB(220,220,220);
HI=38; //win2000:38; win98:25
xz0=4;
}

2006-03-06 09:37
leathe
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2006-3-5
得分:0 
谢谢楼主提示,这个问题解决!
不过,编译的时候出现了一个问题,请赐教:
void CSpline1View::huatu0(CDC*pDC)
{
int i,j;
double s,x,y;
quxian0(pDC);//画坐标
pDC->LineTo(int(HI*poix[0]),int(HI*poiy[0]));
for(i=0;i<n;i++)
{
for(j=1;j<=1000;j++)
{
s=t[i]+j*h[i]/1000.;
x=pow(t[i]-s,3)*dx[i-1]/pow(h[i],2)
-pow(s-t[i-1],2)*(t[i]-s)*dx[i]/pow(h[i],2)
-> +pow(t[i]-s,2)*(2(s-t[i-1])+h[i])*poix[i-1]/pow(h[i],3)
-> +pow(s-t[i-1],2)*(2(t[i]-s)+h[i])*poix[i]/pow(h[i],3);
y=pow(t[i]-s,3)*dy[i-1]/pow(h[i],2)
-pow(s-t[i-1],2)*(t[i]-s)*dy[i]/pow(h[i],2)
-> +pow(t[i]-s,2)*(2(s-t[i-1])+h[i])*poiy[i-1]/pow(h[i],3)
-> +pow(s-t[i-1],2)*(2(t[i]-s)+h[i])*poiy[i]/pow(h[i],3);
pDC->LineTo(int(HI*x),int(HI*y));
}
}
}
->提示:term does not evaluate to a function
如何解决?
2006-03-06 09:56
myajax95
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:30
帖 子:2978
专家分:0
注 册:2006-3-5
得分:0 
这段程序写的实在有点乱,简单的查错方法就是把长语句拆开,例如
x=pow(t[i]-s,3)*dx[i-1]/pow(h[i],2)‘
x-=pow(s-t[i-1],2)*(t[i]-s)*dx[i]/pow(h[i],2);
x+=pow(t[i]-s,2)*(2(s-t[i-1])+h[i])*poix[i-1]/pow(h[i],3);
x+=pow(s-t[i-1],2)*(2(t[i]-s)+h[i])*poix[i]/pow(h[i],3);

另外pow的优先级不知够不够,不妨多打几个括号再试试

http://myajax95./
2006-03-06 14:44



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-48587-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.220917 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved