无法计算字符类型的数量
unable to count numbers of char type
我正在尝试为我的作业做一个特定的计数器,但我尝试了很多方法,但我仍然无法弄清楚。
我的程序允许用户根据他们的输入找出三角形的类型。
所以我有两个主要函数来确定三角形的形状和显示计数器。
char shapeTriangle(int, int, int); //determine shape of triangle i.e isosceles ('I'), equilateral ('E')
int summaryDisplay(char); // display counter
在我的 shapeTriangle
函数中,我有一个简单的 if else 语句,即 returns 基于用户输入的类型
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;
}
我设法获得了一个输出,但是,计数器 returns 我有一些奇怪的值,例如 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));
}
感谢任何帮助。
EDIT 1 : 我尝试初始化但是,它 returns 我对所有不同类型都是 0。
您似乎在 finalSum()
的范围内声明了 eCount
和 iCount
。这意味着它们的值如果未初始化,将是堆栈中先前 activity 的垃圾,这就是您所看到的。 尝试全局声明它们,以在函数调用中保留它们的值。
您应该确保您的计数变量在递增之前已正确声明和初始化,否则您将陷入未定义的行为。
您没有 type
的默认值。如果所有三个输入值都不同怎么办?在您的 if
语句中没有为 type
分配任何值,并且未初始化。
尝试为未知设置一个默认值,如 'U'
...
只需用零初始化您的计数器,这将作为您的计数器起始值。像这样:
int eCount = 0, iCount = 0;
此外,如果满足您的 none 个条件,您希望 type
成为什么样的人?因为如果您没有初始化满足条件的 type
和 none(if (x == y && y == z && x == z)
和 if (x == y || y == z || x == z)
),那么稍后您的两个计数器都将保持为 0。
您必须初始化您的变量。
我正在尝试为我的作业做一个特定的计数器,但我尝试了很多方法,但我仍然无法弄清楚。
我的程序允许用户根据他们的输入找出三角形的类型。
所以我有两个主要函数来确定三角形的形状和显示计数器。
char shapeTriangle(int, int, int); //determine shape of triangle i.e isosceles ('I'), equilateral ('E')
int summaryDisplay(char); // display counter
在我的 shapeTriangle
函数中,我有一个简单的 if else 语句,即 returns 基于用户输入的类型
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;
}
我设法获得了一个输出,但是,计数器 returns 我有一些奇怪的值,例如 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));
}
感谢任何帮助。
EDIT 1 : 我尝试初始化但是,它 returns 我对所有不同类型都是 0。
您似乎在 finalSum()
的范围内声明了 eCount
和 iCount
。这意味着它们的值如果未初始化,将是堆栈中先前 activity 的垃圾,这就是您所看到的。 尝试全局声明它们,以在函数调用中保留它们的值。
您应该确保您的计数变量在递增之前已正确声明和初始化,否则您将陷入未定义的行为。
您没有 type
的默认值。如果所有三个输入值都不同怎么办?在您的 if
语句中没有为 type
分配任何值,并且未初始化。
尝试为未知设置一个默认值,如 'U'
...
只需用零初始化您的计数器,这将作为您的计数器起始值。像这样:
int eCount = 0, iCount = 0;
此外,如果满足您的 none 个条件,您希望 type
成为什么样的人?因为如果您没有初始化满足条件的 type
和 none(if (x == y && y == z && x == z)
和 if (x == y || y == z || x == z)
),那么稍后您的两个计数器都将保持为 0。
您必须初始化您的变量。