我试图为我的赋值做一个特定的计数器,但我尝试了很多方法,但仍然无法弄清楚。
我的程序允许用户根据自己的输入找出三角形的类型。
所以我有两个主要功能来确定三角形的形状和显示计数器。
char shapeTriangle(int,int,int)//确定三角形的形状,即等腰("i")、等边("e")
int summaryDisplay(char);//显示计数器
在我的shapeTriangle
函数中,我有一个简单的if-else语句,它返回基于用户输入的类型
char shapeTriangle(int x, int y, int z)
{
char type;
if (x == y && y == z && x == z)
type = 'E';
else if (x == y || y == z || x == z)
type = 'I';
return type;
}
在我的main function
上,我有一个循环,允许用户输入,直到其中一个值为0。
在summaryDisplay
中,我试图计算某个三角形被确定的次数
int finalSum(char type)
int eCount = 0, iCount = 0;
if (type == 'E')
eCount++;
if (type == 'I')
iCount++;
cout << "Equilateral" << eCount;
cout << "Isosceles" << iCount;
}
然而,我设法获得了一个输出,计数器返回了一些奇怪的值,比如540934
或3453
等,我真的无法计算出来。
这就是我尝试在int main
中调用函数的方式
int main()
{
int x, y, z;
do{
cout << "Enter 3 intgers : ";
cin >> x >> y >> z;
//some display output codes
}while ( x != 0 && y != 0 && z != 0);
finalSum(shapeTriangle(x, y, z));
}
感谢您的帮助。
编辑1:我尝试初始化,但对于所有不同的类型,它都会返回0。
只需使用Zero初始化计数器,它将作为计数器的起始值。像这样:
int eCount = 0, iCount = 0;
此外,如果你的条件都不满足,你希望type
是什么?因为如果您没有初始化type
,并且没有满足任何条件(if (x == y && y == z && x == z)
和if (x == y || y == z || x == z)
),那么稍后两个计数器都将保持0。
您必须初始化您的变量。
type
没有默认值。如果所有三个输入值都不同怎么办?在if
语句中,没有为type
分配任何值,并且未对其进行初始化。
尝试为未知设置一个默认值,如'U'
。。。
看起来您已经在finalSum()
的范围内声明了eCount
和iCount
。这意味着,如果未初始化它们的值,它们将是堆栈上先前活动的垃圾,这就是您所看到的
您应该确保您的计数变量在递增之前已正确声明和初始化,否则您将陷入未定义的行为。