2017-09-14 90 views
0

儘管用大量,我收到上線一個浮點異常21.C++浮點異常大文件

#include <bits/stdc++.h> 
using namespace std; 


int main() { 
    std::ios_base::sync_with_stdio(false); 
    int S, Q, type, seq, pos; 
    int x, y, lastAnswer = 0; 
    cin >> S >> Q; 
    vector< vector <int> > seqList(S); 

    for(int i=0; i<Q; i++){ 
     cin >> type >> x >> y; 
     if(type == 1){ 
      seq = (x^lastAnswer) % S; 
      seqList[seq].push_back(y); 
      if(seq == 0) lastAnswer = 0; 
     } 
     else if(type == 2){ 
      seq = (x^lastAnswer) % S; 
      pos = (int)(y % seqList[seq].size()); //Line 21 
      lastAnswer = seqList[seq][pos]; 
      cout << lastAnswer << endl; 
     } 
    } 

    return 0; 
} 
+6

這是因爲大小爲0而使用的不#包括<比特/ STDC++。H>](https://stackoverflow.com/q/31816095/995714)和[不要使用'使用命名空間標準'](https://stackoverflow.com/q/1452721/995714) –

+0

您使用的是哪種編譯器(和版本)?命名*「浮點」*由不涉及任何浮點類型的操作引發的異常真是令人誤解。 –

+0

你知道'^'運算符是按位[exclusive or](https://en.wikipedia.org/wiki/Exclusive_or)運算符嗎? –

回答

0
pos = (int)(y % seqList[seq].size()); //Line 21 

seqList[seq].size()0數據(大約2MB)的執行以下代碼。 @Lưu Vĩnh Phúc

對於a%b,如果b == 0那麼行爲沒有被定義。許多平臺報告浮點例外時,整數除法或%被嘗試零。

重新寫入以檢測何時seqList[seq].size() == 0

同時檢查S == 0因爲它與(x^lastAnswer) % S@Jeremy Friesner

+0

另外它看起來像S讀入爲零時可能會發生同樣的問題。 –