免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123下一页
最近访问板块 发新帖
查看: 3878 | 回复: 24
打印 上一主题 下一主题

pow(readfile.t[k],j)请教 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-07-08 16:05 |只看该作者 |倒序浏览
double  A [j];
float readfile.t[k];
main(){
.............
for(k=0;k<m;k++)
    A[j]+=pow(readfile.t[k],j);
..............
}
编译的时候没抱错,但是单步调试这个求和抱错:
Unhanlded expction in test.exe:0xc0000005 Access Violation
请问这是什么错?


[ 本帖最后由 light511 于 2009-7-8 16:11 编辑 ]

论坛徽章:
1
天蝎座
日期:2013-10-23 21:11:03
2 [报告]
发表于 2009-07-08 16:16 |只看该作者
原帖由 light511 于 2009-7-8 16:05 发表
double  A [j];
float readfile.t[k];
main(){
.............
for(k=0;k


float readfile.t[k]
这个语法……

论坛徽章:
0
3 [报告]
发表于 2009-07-08 16:26 |只看该作者

回复 #2 openspace 的帖子

不好意思写错了,是float t[k];

论坛徽章:
1
天蝎座
日期:2013-10-23 21:11:03
4 [报告]
发表于 2009-07-08 16:33 |只看该作者

回复 #3 light511 的帖子

这个k定义了数组长度应该是编译时常量
而后面你又for(k=0;k<m;k++)
这个编译时就应该通不过吧

你把完整的代码贴一下吧
别忘了用[code][/code]方便阅读

论坛徽章:
0
5 [报告]
发表于 2009-07-08 17:39 |只看该作者

回复 #1 light511 的帖子

以后这种题最好用代码框起来

论坛徽章:
0
6 [报告]
发表于 2009-07-08 18:12 |只看该作者

回复 #4 openspace 的帖子

A[j]+=pow(readfile.t[k],j);
编译的时候没抱错,但是单步调试这个求和抱错:
Unhanlded expction in test.exe:0xc0000005 Access Violation
代码如下,我的A是二维数组,ReadFile是自己定义的另一个类:

  1. bool XSJZA::createA(ReadFile& readfile)
  2. {
  3. int i=0,j=0,k=0,m=readfile.m;
  4.     if(0==i)
  5. {printf("in createA!\n");
  6.     for(j=0;j<pow((n+1),(n+1));j++)
  7.     if(j>=0 && j<=n)
  8.         for(k=0;k<m;k++)
  9.          A[i][j]+=pow(readfile.t[k],j);
  10.     else if((j>=n+1) && (j<=2*n+1))
  11.       for(k=0;k<m;k++)
  12.         A[i][j]+=pow(readfile.t[k],(j-(n+1)))*readfile.p[k];
  13.     else if((j>=2*(n+1)) && (j<=3*n+2))
  14.       for(k=0;k<m;k++)
  15.         A[i][j]+=pow(readfile.t[k],(j-2*(n+1)))*readfile.p[k]*readfile.p[k];
  16.   else if((j>=3*(n+1)) && (j<=4*n+3))
  17.     for(k=0;k<m;k++)
  18.       A[i][j]+=pow(readfile.t[k],(j-3*(n+1)))*readfile.p[k]*readfile.p[k]*readfile.p[k];
  19.   else if((j>=4*(n+1)) && (j<=5*n+4))
  20.     for(k=0;k<m;k++)
  21.       A[i][j]+=pow(readfile.t[k],(j-4*(n+1)))*readfile.p[k]*readfile.p[k]*readfile.p[k]*readfile.p[k];
  22.   else if((j>=5*(n+1)) && (j<=6*n+5))
  23.     for(k=0;k<m;k++)
  24.       A[i][j]+=pow(readfile.t[k],(j-5*(n+1)))*readfile.p[k]*readfile.p[k]*readfile.p[k]*readfile.p[k]*readfile.p[k];
  25. }
  26. for(i=1;i<pow((n+1),(n+1));i++)
  27. {
  28.   for(j=0;j<pow((n+1),(n+1));j++)
  29.      if(j>=0 && j<=n)
  30.        for(k=0;k<m;k++)
  31.         A[i][j]+=pow(readfile.t[k],j)*A[0][i];
  32.      else if((j>=n+1) && (j<=2*n+1))
  33.        for(k=0;k<m;k++)
  34.         A[i][j]+=pow(readfile.t[k],(j-(n+1)))*readfile.p[k]*A[0][i];
  35.      else if((j>=2*(n+1)) && (j<=3*n+2))
  36.        for(k=0;k<m;k++)
  37.         A[i][j]+=pow(readfile.t[k],(j-2*(n+1)))*readfile.p[k]*readfile.p[k]*A[0][i];
  38.      else if((j>=3*(n+1)) && (j<=4*n+3))
  39.        for(k=0;k<m;k++)
  40.         A[i][j]+=pow(readfile.t[k],(j-3*(n+1)))*readfile.p[k]*readfile.p[k]*readfile.p[k]*A[0][i];
  41.      else if((j>=4*(n+1)) && (j<=5*n+4))
  42.        for(k=0;k<m;k++)
  43.         A[i][j]+=pow(readfile.t[k],(j-4*(n+1)))*readfile.p[k]*readfile.p[k]*readfile.p[k]*readfile.p[k]*A[0][i];
  44.      else if((j>=5*(n+1)) && (j<=6*n+5))
  45.        for(k=0;k<m;k++)
  46.         A[i][j]+=pow(readfile.t[k],(j-5*(n+1)))*readfile.p[k]*readfile.p[k]*readfile.p[k]*readfile.p[k]*readfile.p[k]*A[0][i];
  47. }

  48. for(i=0;i<pow((n+1),(n+1));i++)
  49. {
  50.   for(j=0;j<pow((n+1),(n+1));j++)
  51.    printf("%f\t",A[i][j]);
  52.   printf("\n");
  53. }
  54. return true;
  55. }
复制代码

[ 本帖最后由 light511 于 2009-7-8 18:23 编辑 ]

论坛徽章:
1
天蝎座
日期:2013-10-23 21:11:03
7 [报告]
发表于 2009-07-08 18:30 |只看该作者

回复 #6 light511 的帖子

你的这个n从哪定义的
如果n是单维大小的话
是不是越界了
你的代码总是与pow((n+1),(n+1))比较
这个数值应该挺大呀,超出数组单维大小了

[ 本帖最后由 openspace 于 2009-7-8 18:35 编辑 ]

论坛徽章:
0
8 [报告]
发表于 2009-07-08 18:36 |只看该作者

回复 #7 openspace 的帖子

n是class XSJZA的一个成员变量
  1. class XSJZA{
  2.         public:
  3.                 const int sz;
  4.                 const int n;
  5.                 double ** A;
  6.                 bool createA(ReadFile& readfile);
  7.                 XSJZA(int a,int b):sz(a),n(b){
  8.                         A= new double*[sz];
  9.                 }
  10.                 ~XSJZA(){
  11.                         delete []A;
  12.                 }
  13.         };

  14. class ReadFile{
  15.     public:
  16.               int m,mP;
  17.               const int sz;
  18.               float *p;
  19.               float *t;
  20.                       int *P;
  21.               ReadFile(int a):sz(a){
  22.                       m=0;
  23.                       mP=0;
  24.                       p=new float[sz];
  25.                       t=new float[sz];
  26.                       P=new int[sz];
  27.               }
  28.               ~ReadFile(){
  29.                       delete []p;
  30.                       delete []t;
  31.                       delete []P;
  32.                       };
  33.         bool readfile(char *);
  34.         bool readfileP(char *);
  35.         float func_16to10(char *);
  36.       };
复制代码

[ 本帖最后由 light511 于 2009-7-8 18:37 编辑 ]

论坛徽章:
1
天蝎座
日期:2013-10-23 21:11:03
9 [报告]
发表于 2009-07-08 18:37 |只看该作者

回复 #8 light511 的帖子

pow((n+1),(n+1))这个数值可能超出sz大小
你再看看是不是

论坛徽章:
0
10 [报告]
发表于 2009-07-08 18:40 |只看该作者

回复 #9 openspace 的帖子

哎,超了,这里我取n=5,即
XSJZA xsjzA(25,5);
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP