从cin输入后,C数组永远不会填充

时间:2016-04-25 12:07:58

标签: c++ arrays

以下代码从不在两个整数数组seqsseq_sizes中放置任何内容,但在运行时暂停和调试时,所有其他变量都包含预期内容。

为什么这些数组仍然是空的,尽管有人要求将这些数据放入其中?

#include <iostream>
using namespace std;

int main(){
    int n,q;
    cout << "n q:" << endl;
    cin>>n>>q;
    int m = 1000000;
    int seqs[m];
    int seq_sizes[n];

    cout << "seqs:" << endl;
    for (auto i=0;i<n;++i){
        cout << i << ":" << endl;
        int take;
        cin>>take;
        seq_sizes[i]=take;
        for (auto j=0;j<seq_sizes[i];++j){
            int take2;
            cin>>take2;
            seqs[i+j]=take2;
        }
    }
    cout << "queries:" << endl;
    for (auto i=0;i<q;++i){
        int seq,index;
        cin>>seq>>index;
        int tally=0;
        for (auto j=0;j<seq;++j){
            tally+=seq_sizes[j];
        }
        cout<<seqs[tally+index]<<endl;
    }

    return 0;
}

示例输入:

2 2 3 1 5 4 5 1 2 8 9 3 0 1 1 3

1 个答案:

答案 0 :(得分:1)

   <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <!-- Customize your theme here. -->
    </style>

检查此循环的功能(考虑您的输入) 它设置seq_sizes [0] = 3一次,然后重新初始化为1。 同样发生一次又一次导致错误。 考虑在行seqs [i + j] = take2;

中改变i + j