张志强Incredible 2017-03-23 11:00 采纳率: 33.3%
浏览 1380

【九度1014】代码在本地运行正确,提交就是runtime error

题目链接

希望能得到高人指点

 #include <iostream>
#include <string>
#include <vector>
#include <sstream>
#include <fstream>
#include <cstring>
#include <algorithm>

using namespace std;

class Student {
public:
    string name;
    vector<int> vct_sc;
    int sum;
    void _sum(){
        for(int i = 0; i < vct_sc.size(); i++){
            sum += vct_sc[i];
        }
        return;
    }
    void _print(){
        cout << "stu print : " << name << " total score : " << sum << endl;
    }
};

bool cmp_stu(Student *s1, Student *s2){
    return s1->sum == s2->sum ? (s1->name < s2->name) : (s1->sum > s2->sum);
}

int main(){
    // cout << "hello world" << endl;
    int status = 0;
    string s;
    string temp;

    // read from file
    /*
    ifstream rdata("1024.input");
    if(!rdata.is_open()){
        //cout << "can't open data file" << endl;
        return 1;
    }
    */
    stringstream iss;
    vector<int> vct_fs;
    vector<Student*> vct_stu;
    bool flag = true;
    int nums[3];
    int i_temp;
    int i;
    while(flag){
        switch(status){
            case 0:
                    //cout << "status : 0 " << endl;
                    getline(cin, s);
                    //cout << "get line : " << s << endl;
                    iss.clear();
                    iss << s;
                    i = 0;
                    while(iss >> i_temp){
                        nums[i] = i_temp;
                        // cout << "nums[]: " << nums[i] << endl;
                        i++;
                    }
                    if(nums[0] == 0)
                        flag = false;
                    else{

                    }
                    status++;
                    break;
            case 1:
                    //cout << "status : 1 " << endl;
                    getline(cin, s);
                    //cout << "get line : " << s << endl;
                    iss.clear();
                    iss << s;
                    vct_fs.clear();
                    while(iss >> i_temp){
                        vct_fs.push_back(i_temp);
                        //cout << "vct push: " << i_temp << endl;
                    }
                    status++;
                    break;
            case 2:
                    vct_stu.clear();
                    //cout << "status : 2 " << endl;
                    for(int i = 0; i < nums[0]; i++){
                        getline(cin, s);
                        //cout << "get line : " << s << endl;
                        iss.clear();
                        iss << s;
                        iss >> s;
                        int fix_num;
                        iss >> fix_num;
                        Student *st = new Student();
                        st->name = s;
                        while(iss >> i_temp){
                            //cout <<"case 3: " << temp << enOdl ;
                            st->vct_sc.push_back(vct_fs[i_temp-1]);
                        }
                        st->_sum();
                        //st->_print();
                        vct_stu.push_back(st);
                    }
                    status=3;
                    break;
            case 3:
                    //cout << "status : 3 " << endl;
                    //cout << "the result :" << endl;
                    //cout << "score line is : " << nums[2] << endl;
                    // calc(ute testroom
                    int pass[vct_stu.size()];
                    memset(pass, 0, sizeof(int)*vct_stu.size());
                    int count = 0;
                    sort(vct_stu.begin(),vct_stu.end(), cmp_stu);
                    for(int i = 0; i < vct_stu.size(); i++){
                        if(vct_stu[i]->sum >= nums[2]){
                            pass[i] = 1;
                            count += 1;
                        }
                    }
                    cout << count << endl;
                    for(int i = 0; i < vct_stu.size(); i++){
                        if(pass[i] == 1){
                            cout << vct_stu[i]->name << " " << vct_stu[i]->sum << endl;
                        }
                    }
                    status = 0;
                    break;
            finally:
                    break;

        }
    }
    //cout << "over bye ~" << endl;
    return 0;
}

  • 写回答

2条回答 默认 最新

  • 小邓在路上 2017-03-24 07:33
    关注

    什么错误,具体在什么位置 你能指出来吗

    评论

报告相同问题?

悬赏问题

  • ¥15 求帮我调试一下freefem代码
  • ¥15 R语言Rstudio突然无法启动
  • ¥15 关于#matlab#的问题:提取2个图像的变量作为另外一个图像像元的移动量,计算新的位置创建新的图像并提取第二个图像的变量到新的图像
  • ¥15 改算法,照着压缩包里边,参考其他代码封装的格式 写到main函数里
  • ¥15 用windows做服务的同志有吗
  • ¥60 求一个简单的网页(标签-安全|关键词-上传)
  • ¥35 lstm时间序列共享单车预测,loss值优化,参数优化算法
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图