- 论坛徽章:
- 0
|
回复 #17 openspace 的帖子
代码如下
- #include<stdio.h>
- #include<string.h>
- #include<math.h>
- class ReadFile{
- public:
- int m,mP;
- const int sz;
- float *p;
- float *t;
- int *P;
- ReadFile(int a):sz(a){
- m=0;
- mP=0;
- p=new float[sz];
- t=new float[sz];
- P=new int[sz];
- }
- ~ReadFile(){
- delete []p;
- delete []t;
- delete []P;
- };
- bool readfile(char *);
- bool readfileP(char *);
- float func_16to10(char *);
- };
- class XSJZA{
- public:
- const int sz;
- const int n;
- double ** A;
- bool createA(ReadFile& readfile);
- XSJZA(int a,int b):sz(a),n(b){
- A= new double*[sz];
- }
- ~XSJZA(){
- delete []A;
- }
- };
- bool ReadFile::readfile(char * pathname)
- {
- int i=0;
- char tmpp[7],tmpt[7];
- FILE * cfPtr;
- printf("pathname=%s\n",pathname);
- if((cfPtr=fopen(pathname,"r"))==NULL)
- {
- printf("file can not be opened!\n");
- return false;
- }
- else while(!feof(cfPtr))
- {
- fscanf(cfPtr,"%s%s",&tmpp,&tmpt);
- p[m]=func_16to10(tmpp);
- t[m]=func_16to10(tmpt);
- m++;
- }
- fclose(cfPtr);
- return true;
- }
- float ReadFile::func_16to10(char * str1)
- {
- int i=0;
- int len=strlen(str1);
- float pt=0.0;
- for(i=len-1;i>=0;i--)
- if(*str1>=48 && *str1<=57)
- pt+=(*str1++-48)*pow(16,i);
- else if(*str1>=65 && *str1<=70)
- pt+=(*str1++-55)*pow(16,i);
- else printf("你的数据16进制表示错误");
- return pt;
- }
- bool ReadFile::readfileP(char * pathname)
- {
- int tmpP;
- FILE * cfPtr;
-
- if((cfPtr=fopen(pathname,"r"))==NULL)
- {
- // MessageBoxA(NULL,"File can not be opened!","Filenotopen",MB_OK);
- return false;
- }
- else while(!feof(cfPtr))
- {
- fscanf(cfPtr,"%d",&tmpP);
- P[mP]=tmpP;
- mP++;
- }
- fclose(cfPtr);
- return true;
- }
- bool XSJZA::createA(ReadFile& readfile)
- {
- int i=0,j=0,k=0,m=readfile.m;
- if(0==i)
- {
- for(j=0;j<(n+1)*(n+1);j++)
- if(j>=0 && j<=n)
- for(k=0;k<m;k++)
- // A[i][j]+=pow(readfile.t[k],j);
- A[i][j]+=1.0;
- else if((j>=n+1) && (j<=2*n+1))
- for(k=0;k<m;k++)
- A[i][j]+=pow(readfile.t[k],(j-(n+1)))*readfile.p[k];
- else if((j>=2*(n+1)) && (j<=3*n+2))
- for(k=0;k<m;k++)
- A[i][j]+=pow(readfile.t[k],(j-2*(n+1)))*readfile.p[k]*readfile.p[k];
- else if((j>=3*(n+1)) && (j<=4*n+3))
- for(k=0;k<m;k++)
- A[i][j]+=pow(readfile.t[k],(j-3*(n+1)))*readfile.p[k]*readfile.p[k]*readfile.p[k];
- else if((j>=4*(n+1)) && (j<=5*n+4))
- for(k=0;k<m;k++)
- A[i][j]+=pow(readfile.t[k],(j-4*(n+1)))*readfile.p[k]*readfile.p[k]*readfile.p[k]*readfile.p[k];
- else if((j>=5*(n+1)) && (j<=6*n+5))
- for(k=0;k<m;k++)
- 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];
- }
- for(i=1;i<(n+1)*(n+1);i++)
- {
- for(j=0;j<(n+1)*(n+1);j++)
- if(j>=0 && j<=n)
- for(k=0;k<m;k++)
- A[i][j]+=pow(readfile.t[k],j)*A[0][i];
- else if((j>=n+1) && (j<=2*n+1))
- for(k=0;k<m;k++)
- A[i][j]+=pow(readfile.t[k],(j-(n+1)))*readfile.p[k]*A[0][i];
- else if((j>=2*(n+1)) && (j<=3*n+2))
- for(k=0;k<m;k++)
- A[i][j]+=pow(readfile.t[k],(j-2*(n+1)))*readfile.p[k]*readfile.p[k]*A[0][i];
- else if((j>=3*(n+1)) && (j<=4*n+3))
- for(k=0;k<m;k++)
- A[i][j]+=pow(readfile.t[k],(j-3*(n+1)))*readfile.p[k]*readfile.p[k]*readfile.p[k]*A[0][i];
- else if((j>=4*(n+1)) && (j<=5*n+4))
- for(k=0;k<m;k++)
- 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];
- else if((j>=5*(n+1)) && (j<=6*n+5))
- for(k=0;k<m;k++)
- 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];
- }
-
- for(i=0;i<(n+1)*(n+1);i++)
- {
- for(j=0;j<(n+1)*(n+1);j++)
- printf("%f\t",A[i][j]);
- printf("\n");
- }
- return true;
- }
- int main()
- {
- ReadFile readfile(100);
- ReadFile & Readfile=readfile;
- printf("readfile.sz=%d\n",readfile.sz);
- readfile.readfile("F:\\test\\PRODUCT\\p-t.txt");
- readfile.readfileP("F:\\test\\PRODUCT\\P.txt");
- for(int i=0;i<readfile.m;i++)
- printf("%f\t%f\t%d\n",readfile.p[i],readfile.t[i],readfile.P[i]);
- printf("readfile.m=%d \t readfile.mP=%d\n",readfile.m,readfile.mP);
-
- XSJZA xsjzA(36,5);
- xsjzA.createA(Readfile);
- return 0;
- }
复制代码
需要这两个文件,我再给你
F:\\test\\PRODUCT\\p-t.txt
F:\\test\\PRODUCT\\P.txt |
|