私はこのプログラムを書いています。しかし、算術例外エラーが発生しています。 プログラム:工芸的例外エラーを取得する
#include<bits/stdc++.h>
using namespace std;
int fact(int n)
{
int facte = 1;
for (int i = 1; i <= n; i++)
facte *= i;
return facte;
}
int main()
{
int n, k;
cin >> n >> k;
int sum1 = 0;
int res = 0;
int temp = k;
int term1, term2, term3;
while ((n - temp) > 1)
{
term1 = fact(n);
term2 = fact(n - temp);
term3 = fact(temp);
res = int((term1/(term2 * term3)));
sum1 += res;
temp--;
}
cout << sum1 * fact(n - k - 1) + 1;
}
入力:
n=4 and k=2エラー:
GDB trace: Reading symbols from solution...done. [New LWP 18123] Core was generated by `solution'. Program terminated with signal SIGFPE, Arithmetic exception. #0 main() at solution.cc:29 29 res=int((term1/(term2*term3))); #0 main() at solution.cc:29
「term2」または「term3」はゼロでなければなりません。 – dasblinkenlight
'p term2'と' p term3'はどのような値を持っているのかを調べるには – pm100
'sum + = res;の代わりに' sum1 + = res; 'を使うべきだと思います –