免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: light511
打印 上一主题 下一主题

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

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

回复 #10 light511 的帖子

最好将这个N宏定义

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

回复 #9 openspace 的帖子

可是我用这对参数构造,还是不行
XSJZA xsjzA(36,5);
单步调试第一次赋值时就报那个错了

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

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

回复 #12 light511 的帖子

m=readfile.m

有readfile.p[k]
for(k=0;k<m;k++)
看看这个有没有越界

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

回复 #13 openspace 的帖子

这里没有越界,p[100],t[100],m=33
  1. for(k=0;k<m;k++)
  2.     A[i][j]+=pow(readfile.t[k],j);
复制代码

第一次赋值时i=0,j=0,k=0,就报那个错了.

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

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

原型:extern float pow(float x, float y);
  用法:#include <math.h>
  功能:计算x的y次幂。

5^5  >> 36

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

回复 #15 openspace 的帖子

汗,这个地方是错了,我该了(n+1)*(n+1),但是那个错还是
第一次赋值时i=0,j=0,k=0,就报那个错了.
是不是我这个二维数组A [j]定义的有问题,好象这个数组不能被赋值

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

论坛徽章:
1
天蝎座
日期:2013-10-23 21:11:03
17 [报告]
发表于 2009-07-08 19:30 |只看该作者
一会半会儿看不出来

你把所有代码都贴出来
我跑一下看看

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

回复 #17 openspace 的帖子

代码如下

  1. #include<stdio.h>
  2. #include<string.h>
  3. #include<math.h>
  4. class ReadFile{
  5.     public:
  6.               int m,mP;
  7.               const int sz;
  8.               float *p;
  9.               float *t;
  10.                       int *P;
  11.               ReadFile(int a):sz(a){
  12.                       m=0;
  13.                       mP=0;
  14.                       p=new float[sz];
  15.                       t=new float[sz];
  16.                       P=new int[sz];
  17.               }
  18.               ~ReadFile(){
  19.                       delete []p;
  20.                       delete []t;
  21.                       delete []P;
  22.                       };
  23.         bool readfile(char *);
  24.         bool readfileP(char *);
  25.         float func_16to10(char *);
  26.       };
  27. class XSJZA{
  28.         public:
  29.                 const int sz;
  30.                 const int n;
  31.                 double ** A;
  32.                 bool createA(ReadFile& readfile);
  33.                 XSJZA(int a,int b):sz(a),n(b){
  34.                         A= new double*[sz];
  35.                 }
  36.                 ~XSJZA(){
  37.                         delete []A;
  38.                 }
  39.         };
  40. bool ReadFile::readfile(char * pathname)
  41. {
  42.         int i=0;
  43.         char tmpp[7],tmpt[7];
  44.         FILE * cfPtr;
  45.     printf("pathname=%s\n",pathname);
  46.         if((cfPtr=fopen(pathname,"r"))==NULL)
  47.         {
  48.                 printf("file can not be opened!\n");
  49.                         return false;
  50.         }
  51.         else while(!feof(cfPtr))
  52.         {
  53.                 fscanf(cfPtr,"%s%s",&tmpp,&tmpt);
  54.                 p[m]=func_16to10(tmpp);
  55.                 t[m]=func_16to10(tmpt);
  56.                 m++;
  57.         }
  58.         fclose(cfPtr);
  59.         return true;
  60. }
  61. float ReadFile::func_16to10(char * str1)
  62. {
  63.         int i=0;
  64.         int len=strlen(str1);
  65.         float pt=0.0;

  66.         for(i=len-1;i>=0;i--)
  67.             if(*str1>=48 && *str1<=57)
  68.                      pt+=(*str1++-48)*pow(16,i);
  69.             else if(*str1>=65 && *str1<=70)
  70.                      pt+=(*str1++-55)*pow(16,i);
  71.                  else printf("你的数据16进制表示错误");
  72.         return pt;
  73. }
  74. bool ReadFile::readfileP(char * pathname)
  75. {
  76.         int tmpP;
  77.         FILE * cfPtr;
  78.    
  79.         if((cfPtr=fopen(pathname,"r"))==NULL)
  80.         {
  81.         //        MessageBoxA(NULL,"File can not be opened!","Filenotopen",MB_OK);
  82.                         return false;
  83.         }
  84.         else while(!feof(cfPtr))
  85.         {
  86.                 fscanf(cfPtr,"%d",&tmpP);
  87.                 P[mP]=tmpP;
  88.                 mP++;
  89.         }
  90.         fclose(cfPtr);
  91.         return true;
  92. }
  93. bool XSJZA::createA(ReadFile& readfile)
  94. {
  95.         int i=0,j=0,k=0,m=readfile.m;

  96.     if(0==i)
  97.         {
  98.                 for(j=0;j<(n+1)*(n+1);j++)
  99.                         if(j>=0 && j<=n)
  100.                                 for(k=0;k<m;k++)
  101.                                 //        A[i][j]+=pow(readfile.t[k],j);
  102.                                 A[i][j]+=1.0;
  103.                                 else if((j>=n+1) && (j<=2*n+1))
  104.                                         for(k=0;k<m;k++)
  105.                                                 A[i][j]+=pow(readfile.t[k],(j-(n+1)))*readfile.p[k];
  106.                                         else if((j>=2*(n+1)) && (j<=3*n+2))
  107.                                                 for(k=0;k<m;k++)
  108.                                                         A[i][j]+=pow(readfile.t[k],(j-2*(n+1)))*readfile.p[k]*readfile.p[k];
  109.                                                 else if((j>=3*(n+1)) && (j<=4*n+3))
  110.                                                         for(k=0;k<m;k++)
  111.                                                                 A[i][j]+=pow(readfile.t[k],(j-3*(n+1)))*readfile.p[k]*readfile.p[k]*readfile.p[k];
  112.                                                         else if((j>=4*(n+1)) && (j<=5*n+4))
  113.                                                                 for(k=0;k<m;k++)
  114.                                                                         A[i][j]+=pow(readfile.t[k],(j-4*(n+1)))*readfile.p[k]*readfile.p[k]*readfile.p[k]*readfile.p[k];
  115.                                                                 else if((j>=5*(n+1)) && (j<=6*n+5))
  116.                                                                         for(k=0;k<m;k++)
  117.                                                                                 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];
  118.         }
  119.         for(i=1;i<(n+1)*(n+1);i++)
  120.         {       
  121.                 for(j=0;j<(n+1)*(n+1);j++)
  122.                         if(j>=0 && j<=n)
  123.                                 for(k=0;k<m;k++)
  124.                                         A[i][j]+=pow(readfile.t[k],j)*A[0][i];
  125.                 else if((j>=n+1) && (j<=2*n+1))
  126.                     for(k=0;k<m;k++)
  127.                         A[i][j]+=pow(readfile.t[k],(j-(n+1)))*readfile.p[k]*A[0][i];
  128.                                         else if((j>=2*(n+1)) && (j<=3*n+2))
  129.                                                 for(k=0;k<m;k++)
  130.                                                         A[i][j]+=pow(readfile.t[k],(j-2*(n+1)))*readfile.p[k]*readfile.p[k]*A[0][i];
  131.                                                 else if((j>=3*(n+1)) && (j<=4*n+3))
  132.                                                         for(k=0;k<m;k++)
  133.                                                                 A[i][j]+=pow(readfile.t[k],(j-3*(n+1)))*readfile.p[k]*readfile.p[k]*readfile.p[k]*A[0][i];
  134.                                                         else if((j>=4*(n+1)) && (j<=5*n+4))
  135.                                                                 for(k=0;k<m;k++)
  136.                                                                         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];
  137.                                                                 else if((j>=5*(n+1)) && (j<=6*n+5))
  138.                                                                         for(k=0;k<m;k++)
  139.                                                                                 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];
  140.         }
  141.        
  142.         for(i=0;i<(n+1)*(n+1);i++)
  143.         {
  144.                 for(j=0;j<(n+1)*(n+1);j++)
  145.                         printf("%f\t",A[i][j]);
  146.                 printf("\n");
  147.         }
  148.         return true;       
  149. }
  150. int main()
  151. {
  152.         ReadFile readfile(100);
  153.         ReadFile & Readfile=readfile;
  154.         printf("readfile.sz=%d\n",readfile.sz);
  155.         readfile.readfile("F:\\test\\PRODUCT\\p-t.txt");
  156.         readfile.readfileP("F:\\test\\PRODUCT\\P.txt");
  157.         for(int i=0;i<readfile.m;i++)
  158.                 printf("%f\t%f\t%d\n",readfile.p[i],readfile.t[i],readfile.P[i]);
  159.         printf("readfile.m=%d \t readfile.mP=%d\n",readfile.m,readfile.mP);
  160.        
  161.         XSJZA xsjzA(36,5);
  162.         xsjzA.createA(Readfile);
  163.         return 0;
  164. }

复制代码


需要这两个文件,我再给你
F:\\test\\PRODUCT\\p-t.txt
F:\\test\\PRODUCT\\P.txt

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

回复 #17 openspace 的帖子

F:\\test\\PRODUCT\\p-t.txt内容如下:
919A16 1018
919A1C 1017
919A04 1018
919A55 1017
919A64 1018
919A48 1017
919A29 1018
919A33 1017
919A71 1018
919A5C 1017
919A69 1018
919A7B 1017
919A43 1018
919A61 1017
9199EF 1018
9199F5 1017
919A01 1017
9199E3 1017
9199C4 1018
9199B7 1017
91998D 1018
9199A7 1017
9199A2 1018
91997C 1017
919953 1018
919951 1017
91996E 1018
919962 1017
91995D 1018
919960 1017
919949 1018
919964 1018
919956 1018
F:\\test\\PRODUCT\\P.txt内容如下:
918
917
918
917
918
917
918
917
918
917
918
917
918
917
918
917
917
917
918
917
918
917
918
917
918
917
918
917
918
917
918
918
918

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

回复 #16 light511 的帖子

double ** A;
      

                XSJZA(int a,int b):sz(a),n(b){
                        A= new double*[sz];         // 这里只创建了一维,没有二维
                }

应该这样
A= new double*[sz];
for (int i = 0; i < sz; i++)
   A = new double[sz];

另外,new好像不初始化基本类型的数组元素,具体忘了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP