尝试获取基本分数时出现运行时错误
Runtime error while trying to get base fraction
我有一个名为 Fraction
的 class,在 class 的外部,函数 baseF
用于获取基数。
void Fraction::baseF() {
int n=num,d=den,i;
if(n<d) {
for(i=0;i<n;i++)
if(n%i==0 & d%i==0) {n/=i;d/=i;}
} //end if
else {
for(i=0;i<d;i++)
if(n%i==0 & d%i==0) {n/=i;d/=i;}
} //end else
num=n;
den=d;
}
我知道代码效率不高,只是想弄清楚逻辑。
您有:
for(i=0;i<n;i++)
if(n%i==0 & d%i==0) {n/=i;d/=i;}
在循环的第一次迭代中,i
的值为零。当 i
为零时计算 n%i
是一个问题。
此外,n%i==0 & d%i==0
似乎是一个错字。您的意思可能是 n%i==0 && d%i==0
(按位与与逻辑与)
您可能想使用:
for(i=1; i<n; i++)
if(n%i==0 && d%i==0) {n/=i;d/=i;}
在两个 for
循环中进行修复。
我有一个名为 Fraction
的 class,在 class 的外部,函数 baseF
用于获取基数。
void Fraction::baseF() {
int n=num,d=den,i;
if(n<d) {
for(i=0;i<n;i++)
if(n%i==0 & d%i==0) {n/=i;d/=i;}
} //end if
else {
for(i=0;i<d;i++)
if(n%i==0 & d%i==0) {n/=i;d/=i;}
} //end else
num=n;
den=d;
}
我知道代码效率不高,只是想弄清楚逻辑。
您有:
for(i=0;i<n;i++)
if(n%i==0 & d%i==0) {n/=i;d/=i;}
在循环的第一次迭代中,i
的值为零。当 i
为零时计算 n%i
是一个问题。
此外,n%i==0 & d%i==0
似乎是一个错字。您的意思可能是 n%i==0 && d%i==0
(按位与与逻辑与)
您可能想使用:
for(i=1; i<n; i++)
if(n%i==0 && d%i==0) {n/=i;d/=i;}
在两个 for
循环中进行修复。