Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
求救,为什么我的程序总是runtime error?#include <iostream.h> #include <string.h> #include <memory.h> char later[100]; char * inventory(char previous[100])//检索函数,对一字符数组检索返回检索后的字符数组的头指针 { int b[10]={0}; int c; char * array=later; for(int i=0;i<81;i++)//数字出现一次给以其为脚标的数组元素加1 { if(previous[i]!='\0') { c=previous[i]-'0'; ++b[c]; } else break; } for(i=0;i<10;i++)//顺序向数组中输入数字脚标元素值和数字 { if(b[i]==0); else { if((b[i]/10)!=0) { *array=b[i]/10+'0'; *(++array)=b[i]%10+'0'; *(++array)=i+'0'; } else { *array=b[i]+'0'; *(++array)=i+'0'; } ++array; } } return later;//返回检索后的数组的头指针 } void main() { char input[100]; cin>>input;//输入第一例 char (*results)[100];//放置原始值及历次检索值 char n[100][100];//放置历次原始值 int i;//计数器 char result1[100][100];//放置计算结果对应的输出语言 int result2[100];//放置计算结果对应的输出数字 int j,symbol,k=0;//计数器及标志 int min;//最小步长 while(strcmp(input,"-1"))//判断输入结束(新一例从此开始) { symbol=0; strcpy(n[k],input);//存储原始值 results=new char[16][100];//新建一二维数组 strcpy(results[0],input);//存入原始值 for(i=1;i<16;i++)//顺序存入历次检索值 { strcpy(results[i],inventory(results[i-1])); } if(!strcmp(results[0],results[1]))//比较数组头两个元素是否相同,若相同则为自检索 { strcpy(result1[k]," is self-inventorying"); result2[k]=0; symbol=1; } else//若不同 { for(i=1;i<15;i++) { if(!strcmp(results[i],results[i+1]))//比较数组各相邻两项是否相同,若相同则为间接检索 { strcpy(result1[k]," is self-inventorying after "); result2[k]=i; symbol=1; break; } } if(symbol==0) { min=15; for(i=0;i<14;i++)//若相邻两项均不同 { for(j=i+2;j<16;j++) { if(!strcmp(results[i],results[j]))//若出现后项与前项相同则为变异自检索 { strcpy(result1[k]," enters an inventory loop of length "); if(j-i<=min) min=j-i; symbol=-1; } } } if(symbol==-1) result2[k]=min; } } if(symbol==0)//若上述情况均没出现则为不可归类 { strcpy(result1[k]," can not be classified after 15 iterations"); result2[k]=0; } ++k; cin>>input;//下一例输入 delete []results; memset(later,'\0',100); } for(i=0;i<k;i++)//顺序输出各例结果 { if(result2[i]==0) cout<<n[i]<<result1[i]<<endl; else { if(strcmp(result1[i]," enters an inventory loop of length ")) cout<<n[i]<<result1[i]<<result2[i]<<" steps"<<endl; else cout<<n[i]<<result1[i]<<result2[i]<<endl; } } } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator