我的代码不会输出正确的项目编号

时间:2011-11-28 06:51:41

标签: c++ arrays

这是我的代码的一部分:在下面的第一部分中,我已经声明了一堆浮点数和整数。我已经编写了一个包含三列数据的输入文件。每个订单项代表一个形状。矩形,三角形或圆形。我已成功确定哪些项目是哪些。下面我试图获取数据并计算每个形状的面积。对于圆形,pi * r ^ 2,对于矩形,长度*宽度,对于等边三角形,1 / 2L * H.那么,我为每个形状类型取最大区域,并将它们放入带条件的循环中。我可以成功获得所有三种形状的正确最大区域,但我无法获得输出正确项目编号的代码。你能帮忙吗?

// 3. Which block has the largest area?
// ........................................................

float RA[M];
float CA[M];
float TA[M];
float MRA = 0.0;
float MCA = 0.0;
float MTA = 0.0;
int ItmR = 0;
int ItmC = 0;
int ItmT = 0;
int ItmN = 0;

// ........................................................

for (int i=0; i<M; i++)
{
  if (btype[i] == Rectangles)
  {
    RA[i] = D[i] * E[i];

    if (MRA < RA[i])
    {
      MRA = RA[i];
      ItmR = i+1;
    }
  }
//}
//cout << "The block with the largest area is " << ItmR
//     << endl;

// ........................................................

//for (int i=0; i<M; i++)
//{
if (btype[i] == Circles)
{
  CA[i] = (3.14 * (D[i] * D[i]));

  if (MCA < CA[i])
  {
    MCA = CA[i];
    ItmC = i+1;
  }
}
//}
//cout << "MCA = " << MCA << ", Item No. " << ItmC
//     << endl;

// ........................................................

//for (int i=0; i<M; i++)
//{
if (btype[i] == Triangles)
{
  TA[i] = (0.5 * (D[i] * E[i]));

  if (MTA < TA[i])
  {
    MTA = TA[i];
    ItmT = i+1;
  }
}
//}
//cout << "MTA = " << MTA << ", Item No. " << ItmT
//     << endl;

// ........................................................

if (MRA < MCA)
{
  MRA = MCA;
  ItmN = ItmC;
}
else
  if (MRA < MTA)
  {
    MRA = MTA;
    ItmN = ItmT;
  }
  else
  {
    MRA = MRA;
    ItmN = ItmR;
  }
}
cout << MRA << " " << ItmN << endl;

我无法弄清楚如何让它输出正确的答案项目编号。代码肯定输出正确的区域,但ItmN(项目编号)是错误的。

1 个答案:

答案 0 :(得分:1)

您的代码甚至无法获得最大区域,就好像MRA小于MCAMCA小于MTA,输出将是{的区域{1}},因为两个MCA部分都不会被执行。

为了清晰起见,您还应该定义一个单独的变量来表示最大区域,而不是重用else,并且判断最大区域的最后一段应该放在整个MRA循环之外,不在里面。

for