尝试获取基分数时出现运行时错误

Runtime error while trying to get base fraction

本文关键字:运行时错误 获取      更新时间:2023-10-16

我有一个名为Fraction的类,在该类的外部,函数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循环中进行修复。