这段代码老出问题,不知道错在哪里?
sdata.zip
(611 Bytes)
各位高手:我运行下面这段代码老出问题,不知道错在哪里,求指点!
程序代码:
#include <iostream> #include <fstream> #include <ctime> using namespace std; int main() { long start, finish; start=clock(); ifstream sfile("sdata.txt",ios::in); const unsigned short row=9,col=26; unsigned short r1,c1; unsigned short s1[col][row]; unsigned short (*sp)[row]=s1; for(r1=0;r1<row;r1++) for(c1=0;c1<col;c1++) sfile>>*(*(sp+c1)+r1); sfile.close(); unsigned short res[10000]; unsigned short *rp=res; unsigned short a,b,c,d,e,f,g,h,i,j,k,l,m,n; //o,p,q,r,s,t,u,v,w,x,y,z; unsigned short r2,z1,cln=0,halfrow=row/2; for(n=0;n<col-13;n++) for(m=n+1;m<col-12;m++) for(l=m+1;l<col-11;l++) for(k=l+1;k<col-10;k++) for(j=k+1;j<col-9;j++) for(i=j+1;i<col-8;i++) for(h=i+1;h<col-7;h++) for(g=h+1;g<col-6;g++) for(f=g+1;f<col-5;f++) for(e=f+1;e<col-4;e++) for(d=e+1;d<col-3;d++) for(c=d+1;c<col-2;c++) for(b=c+1;b<col-1;b++) for(a=b+1;a<col;a++) { z1=0; for(r2=1;r2<row;r2++) if(*(*(sp+a)+r2)+*(*(sp+b)+r2)+*(*(sp+c)+r2)+*(*(sp+d)+r2)+*(*(sp+e)+r2)+*(*(sp+f)+r2)+*(*(sp+g)+r2)+*(*(sp+h)+r2)+*(*(sp+i)+r2)+*(*(sp+j)+r2)+*(*(sp+k)+r2)+*(*(sp+l)+r2)+*(*(sp+m)+r2)+*(*(sp+n)+r2)==0) z1++; if(z1>=halfrow) { *(rp+cln)=*(*(sp+a));*(rp+cln+1)=*(*(sp+b));*(rp+cln+2)=*(*(sp+c));*(rp+cln+3)=*(*(sp+d)); *(rp+cln+4)=*(*(sp+e));*(rp+cln+5)=*(*(sp+f));*(rp+cln+6)=*(*(sp+g));*(rp+cln+7)=*(*(sp+h)); *(rp+cln+8)=*(*(sp+i));*(rp+cln+9)=*(*(sp+j));*(rp+cln+10)=*(*(sp+k));*(rp+cln+11)=*(*(sp+l)); *(rp+cln+12)=*(*(sp+m));*(rp+cln+13)=*(*(sp+n)); *(rp+cln+14)=z1; cln+=15; } } ofstream rfile("result.txt",ios::out); unsigned short x1; for(x1=0;x1<cln;x1++) { rfile<<*(rp+x1)<<'\t'; if(x1==14||(x1-14)/15==0) rfile<<endl; } double duration; finish=clock(); duration=(double)(finish-start)/CLOCKS_PER_SEC; rfile<<endl<<duration; rfile.close(); return 0; }谢谢!数据源也一起附上。