无法计算char类型的数量

时间:2016-07-28 15:53:15

标签: c++ function counter

我正在尝试为我的任务做一个特定的计数器,但我尝试了很多方法,但我仍然无法弄明白。

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

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

  
      
  1. char shapeTriangle(int,int,int); //确定三角形的形状,即等腰('I'),等边('E')

  2.   
  3. int summaryDisplay(char); //显示计数器

  4.   

在我的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。

4 个答案:

答案 0 :(得分:1)

只需使用Zero初始化您的计数器,它将作为您的计数器起始值。像这样:

int eCount = 0, iCount = 0;

另外,如果您的条件没有达成,您希望type成为什么样的人?因为如果您没有初始化type并且没有符合条件(if (x == y && y == z && x == z)if (x == y || y == z || x == z)),那么稍后您的两个计数器将保持为0。

答案 1 :(得分:1)

您必须初始化变量。

答案 2 :(得分:0)

看起来您已在eCount范围内宣布iCountfinalSum()。这意味着它们的值(如果未初始化)将是堆栈上先前活动的垃圾,这就是您所看到的。 尝试全局声明它们,以在函数调用中保留它们的值

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

答案 3 :(得分:0)

您没有type的默认值。如果所有三个输入值都不同怎么办? <{1}}语句中没有为type分配任何值,而且这些值未初始化。

尝试为{1}}设置默认值,用于未知...