求助求助!
emmm,闲来无事在搞一个自己想的题,然后发现明明数组开的已经够大了,元素都归零了,但是最终输出还是缺少很多位需要补全的“0”,所以求助一下各位神犇,救救孩子!原意>0 就替换该下标元素,不足以0补齐,但是实际输出少了很多0
程序代码:
#include <iostream> #include <cmath> #include <stdio.h> #include <string.h> #include <vector> #include<cstdio> int out[1000000]; using namespace std; string strin; int times=0; int contral[5]; int maxl,backl,temp,t1,t2,t3,t4,t5,cs=0; const char * fg =","; int main(){ freopen ("read.in","r",stdin); freopen("read.out","w",stdout); cin>>strin; vector<int> arr; char *str_in =(char *)strin.c_str(); char *p = strtok(str_in,fg); int num=0; while(p !=NULL){ sscanf(p,"%d",&num); arr.push_back(num); p=strtok(NULL,fg); times=arr.size(); //times++; } cout<<"此次录入了:"<<times<<"个数据"<<endl; cout<<"元素为:"<<endl; for(int i=0;i<arr.size();i++){ cout<<arr[i]<<' '; } cout<<endl; for(int i=0;i<=4;i++){ contral[i]=arr[times-5+i]; } t1=abs(contral[0]); t2=abs(contral[1]); t3=abs(contral[2]); t4=abs(contral[3]); t5=abs(contral[4]); maxl=max(t1,t2); maxl=max(maxl,t3); maxl=max(maxl,t4); maxl=max(maxl,t5); //找最大值 cout<<"contral数组最大值:"<<maxl<<endl; for(int i=0;i<=maxl+1;i++){ out[i]=0; } for(int t=0;t<arr.size()-5;t++){ out[t]=arr[t]; } cout<<"需排列数组:"<<endl; for(int i=0;i<arr.size()-5;i++){ cout<<out[i]<<' '; cs++; } cout<<endl; //排序处 for(int j=0;j<cs;j++){ for(int i=0;i<cs-j-1;i++){ if(out[i]>out[i+1]){ temp = out[i]; out[i]=out[i+1]; out[i+1]=temp; } } } cout<<endl; cout<<"排序后数组:"<<endl; for(int i=0;i<cs;i++){ cout<<out[i]<<' '; } cout<<endl; for(int i=0;i<=4;i++){ if(contral[i]<0){ for(int j=0;j<=cs;j++){ out[abs(contral[i])]=out[abs(contral[i])+1]; } backl++; //删除最后一位元素,前移一个元素下标 } else if(contral[i]>=0){ out[contral[i]]=contral[i]; } //替换... } cout<<"结果为:"<<endl; for(int i=0;i<=maxl+1-backl;i++){ cout<<out[i]<<' '; } //最终输出 return 0; }