| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 578 人关注过本帖
标题:求助求助!
只看楼主 加入收藏
milusocool
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2018-12-2
收藏
 问题点数:0 回复次数:0 
求助求助!
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;
}
搜索更多相关主题的帖子: int out cout for i++ 
2018-12-02 12:47
快速回复:求助求助!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.043279 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved