| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3260 人关注过本帖
标题:做 PAT 经常段错误
只看楼主 加入收藏
lbgandthesun
Rank: 2
等 级:论坛游民
帖 子:7
专家分:34
注 册:2014-9-13
收藏
 问题点数:0 回复次数:0 
做 PAT 经常段错误
刷PAT题的时候经常出现段错误啊,不知道哪里错了
程序代码:
[code][code]
#include<iostream>
#include<vector>
#include<stdio.h>
using std::vector;
int main()
{    
    int N,temp;
    std::cin>>N;
    vector<int> input;
    vector<int> clas[5][1];
    for(int i=0;i<N;i++)
    {
        std::cin>>temp;
        input.push_back(temp);
    }
    
    auto iterbeg=input.begin();
    auto iterend=input.end();
    for(;iterbeg!=iterend;iterbeg++)
    {
        temp=(*iterbeg)%5;
        switch(temp)
        {
            case 0 : (*clas[0]).push_back(*iterbeg);break;
            case 1 :(*clas[1]).push_back(*iterbeg);break;        //
            case 2 :(*clas[2]).push_back(*iterbeg);break;
            case 3 :(*clas[3]).push_back(*iterbeg);break;
            case 4 :(*clas[4]).push_back(*iterbeg);break;
        }
    }
    int sum=0;
    iterbeg=(clas[0]->begin());
    iterend=(clas[0]->end());
    for(;iterbeg!=iterend;iterbeg++)
    if((*iterbeg)%2==0) sum=sum+(*iterbeg);
    
    if(sum==0) std::cout<<"N ";
    else std::cout<<sum<<" ";

    int a=1;
    sum=0;
    iterbeg=(clas[1]->begin());
    iterend=(clas[1]->end());
    for(;iterbeg!=iterend;iterbeg++)
        {
            sum=sum+(*iterbeg)*a;
            a=a*(-1);
        }
    if(sum==0) std::cout<<"N ";
    else std::cout<<sum<<" ";

    sum=(clas[2]->size());
    if(sum==0) std::cout<<"N ";
    else std::cout<<sum<<" ";

    sum=0;                                //
    iterbeg=((*clas[3]).begin());
    iterend=((*clas[3]).end());
    float aver=0.0;
    for(;iterbeg!=iterend;iterbeg++)
        {
            sum=sum+(*iterbeg);
            
        }
    aver=(float)sum/((*clas[3]).size());
    if(sum==0) std::cout<<"N ";
    else printf("%0.1f ",aver);                //


                                    
    iterbeg=((*clas[4]).begin());
    iterend=((*clas[4]).end());
    sum=*iterbeg;
    for(;iterbeg!=iterend;iterbeg++)
    if((*iterbeg)>sum) sum=*iterbeg;
    std::cout<<sum;
    return 0;
}
[/code][/code]
搜索更多相关主题的帖子: color 
2014-11-04 21:33
快速回复:做 PAT 经常段错误
数据加载中...
 
   



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

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