Блог пользователя Kralc

Автор Kralc, история, 9 лет назад, По-английски

When I was trying 5B, I get runtime error at the first time. I was frustrated since it works well in my computer. After observing the output from the judge, I suspected that there may be problem somewhere around the input handling part. So I re-wrote that part.

Original:

    int max = 0, i = 0, n;
    string in[1000];
    while(getline(cin, in[i])){
        if(in[i].size()>max)max = in[i].size();
        i++;
    }

Second version:

    int max = 0, i = 0, n;
    string in[1000];
    string tmp;
    while(getline(cin, tmp)){
        if(tmp.size()>max)max = tmp.size();
        in[i] = tmp;
        i++;
    }

It is accepted and I have no idea why....

  • Проголосовать: нравится
  • +6
  • Проголосовать: не нравится

»
9 лет назад, # |
  Проголосовать: нравится +11 Проголосовать: не нравится

In the first version, assume there is 1000 lines in the input, the next iteration in the loop, the variable i will equal 1000. Although there is no line in the input and the loop would break, your code would access the 1000 (zero-index) element in the array, which is beyond its size.