这是我的代码的一部分:在下面的第一部分中,我已经声明了一堆浮点数和整数。我已经编写了一个包含三列数据的输入文件。每个订单项代表一个形状。矩形,三角形或圆形。我已成功确定哪些项目是哪些。下面我试图获取数据并计算每个形状的面积。对于圆形,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(项目编号)是错误的。
答案 0 :(得分:1)
您的代码甚至无法获得最大区域,就好像MRA
小于MCA
且MCA
小于MTA
,输出将是{的区域{1}},因为两个MCA
部分都不会被执行。
为了清晰起见,您还应该定义一个单独的变量来表示最大区域,而不是重用else
,并且判断最大区域的最后一段应该放在整个MRA
循环之外,不在里面。
for