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

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 循环中进行修复。