我正在尝试比较来自两个输入文件的数据,以查看一组是否比另一组少

I'm attempting to compare data from two input files to see if one set is less than the other

本文关键字:一组 数据 是否 输入 比较 两个 文件      更新时间:2023-10-16

我正试图将数据从一个文件比较到另一个文件,看看它是否"适合"在另一个文件内。我想一组是"洞"另一组是"积木"我试着看看是否所有的圆块都能装进至少一个圆孔里。如果它们都符合,我想输出"YES"。如果一个不适合,我想输出"NO,所有的圆块不适合至少一个孔。"

下面是我的代码:

    bool fits = false;
    for (int i=0; i<M; i++)
    {
      if (btype[i] == Circles)
      {
        CA[i] = (3.14 * (D[i] * D[i]));
      }
      for (int j=0; j<N; j++)
      {
        if (htype[j] == Circle)
        {
          CA[j] = (3.14 * (A[j] * A[j]));
        }
        if (CA[i] < CA[j])
        {
          fits = true;
          break;
        }
      }
      if (!fits)
      {
        break;
      }   
    }
    if (fits)
    {
      cout << "5. YES, all circle blocks fit a hole. "
           << endl;
    }
    else
    {
      cout << "5. NO, all circle blocks don't fit a hole. "
           << endl;
    }

代码运行不正常。当我在输入文件中输入一个应该让程序显示NO的圆值时,它给了我一个YES。我想不明白。

在最后一个for循环中有if语句进行打印。

for (int j=0; j<N; j++)
{
   if (htype[j] == Circle)
   {
      CirArea[j] = (3.14 * (A[j] * A[j]));
   }

   if (CirArea[i] < CirArea[j])
   {
      cout << "5. YES, all circle blocks fit in a hole. " << endl;
   }
   else
   {
      cout << "5. NO, all circle blocks don't fit a hole. " << endl;
   }
}

如果你想打印消息,如果一个不适合,如果所有的适合,然后打印另一个消息,你可以这样做。

float fits = 0.0;
float nofit = 0.0;
bool result;
for (int i=0; i<M; i++)
{
  result = false;
  if (btype[i] == Circles)
  {
    CirArea[i] = (3.14 * (D[i] * D[i]));
  }
  for (int j=0; j<N; j++)
  {
    if (htype[j] == Circle)
    {
      CirArea[j] = (3.14 * (A[j] * A[j]));
    }
    if (CirArea[i] < CirArea[j])
    {
       result = true;
       //exit inner loop
       break;
    }
  }
  if (!result)
  {
     //exit outer loop
     break;
  }
}
if (result)
{
    cout << "5. YES, all circle blocks fit in a hole. " << endl;
}
else
{
    cout << "5. NO, all circle blocks don't fit a hole. " << endl;
}
由于cout的行在for循环中有N迭代,而在另一个for循环中有M迭代,看起来应该打印M * N