无法计算字符类型的数字

unable to count numbers of char type

本文关键字:数字 类型 字符 计算      更新时间:2023-10-16

我试图为我的赋值做一个特定的计数器,但我尝试了很多方法,但仍然无法弄清楚。

我的程序允许用户根据自己的输入找出三角形的类型。

所以我有两个主要功能来确定三角形的形状和显示计数器。

  1. char shapeTriangle(int,int,int)//确定三角形的形状,即等腰("i")、等边("e")

  2. 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;
}

然而,我设法获得了一个输出,计数器返回了一些奇怪的值,比如5409343453等,我真的无法计算出来。

这就是我尝试在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()的范围内声明了eCountiCount。这意味着,如果未初始化它们的值,它们将是堆栈上先前活动的垃圾,这就是您所看到的

尝试全局声明它们,以在函数调用中保留它们的值

您应该确保您的计数变量在递增之前已正确声明和初始化,否则您将陷入未定义的行为。