簡體   English   中英

浮點異常,即使在檢查是否被零除后也是如此

[英]Floating point exception even after checking if divided by zero

我最近開始學習C ++,我試圖編寫一個程序,在該程序中,我將給定任意大小的整數作為輸入,然后在該數字中找到精確地將整數除的數字。 這些數字的計數將顯示為結果。

#include <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;


int main() {
int n;   //Number of Integers to take as input
cin>>n;
vector<int> a;
for(int i=0;i<n;i++){
    long long val;
    cin>>val;
    a.push_back(val);
}
for(int i=0;i<n;i++){
    int k=1,count=0,r,q;
    r=a[i];
    q=a[i];
    while(k==1){
        q/=10;
        r=q%10;          
        if(a[i]%r==0 && r>=1)
            count++;
        if(q<10 && q>=1){
            if(a[i]%q==0)
                count++;
            k=0;
          }
        if(q==0)
            k=0;
    }
    cout<<count<<"\n";
}

return 0;
}

上面的代碼適用於沒有數字'0'的整數,但是當我使用任何具有0作為數字的整數時,將顯示:

錯誤浮點異常(核心已轉儲)

我嘗試通過在“ r”或“ q”等於“ 0”時跳過數字來嘗試修改代碼,但似乎沒有任何效果。 任何幫助/建議將不勝感激!

r0時:

if(a[i]%r==0 && r>=1)

將無法使用,因為無法評估a[i]%r (取模0將需要定義除以0)。 它會在檢查r>=1之前嘗試評估除法。 如果你像這樣重新排列

if(r >= 1 && a[i] % r == 0)

那么它應該起作用,因為在確定r >= 1false之后, &&運算符會短路。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM