如何计算未完全填充的数组中的整数
我有一个固定大小(10)的int数组,它没有完全填充。如何计算未完全填充的数组中的整数
我想计算数组中有多少个整数,这样我就知道如果我想向数组中添加一个整数,那么索引数组的值是多少。 (所以我不会取代另一个值)
//Define Array
int counter=0;
int scores[10] = {92,87,94,99,96};
//Count how many elements are in the score array
for (int i = 0; i < 10; i++)
{
if (scores[i] == 1)
{
counter++;
}
}
当我输出变量计数器时,我得到的值为“0”。
我看着一对夫妇堆栈溢出帖子,我似乎找到任何东西,这将帮助我找到解决方案!任何帮助或建议都会有很大的帮助。
谢谢。
编辑: 我能够得到我的问题的答案,但我后悔张贴,因为我现在有2个声望点!你们很苛刻! 这是正确的答案
//Define Array
int counter=0;
int scores[10] = {92,87,94,99,96};
//Count how many elements are in the score array
for (int i = 0; i < 10; i++)
{
if (scores[i] != 0)
{
counter++;
}
}
例如,您可以考虑包含0(或-1)的数组元素是未填充的元素。
在阵列中的每个元素应当包括任一的实际值或0。任何情况下
该初始化
int scores[10] = {92,87,94,99,96};
相当于
int scores[10] = {92,87,94,99,96,0,0,0,0,0};
所以环路可以看起来像
for (size_t i = 0; i < sizeof(scores)/sizeof(*scores); i++)
{
if (scores[i] != 0)
{
counter++;
}
}
如果使用值-1的非填充元素,那么你必须初始化非填充元素作为明确例如
int scores[10] = {92,87,94,99,96,-1,-1,-1,-1,-1};
循环将看起来像
for (size_t i = 0; i < sizeof(scores)/sizeof(*scores); i++)
{
if (scores[i] != -1)
{
counter++;
}
}
太棒了,我会接受作为答案。我唯一的问题是你为什么要将'i'初始化为size_t?会说我不工作? –
@ Humanid1652487954543 sizeof运算符返回的值的类型是size_t,它是一个无符号类型。编译器可以发出一个警告,你正在比较一个带符号类型的对象(I)和一个无符号类型的对象(由带有sizeof的表达式返回) –
你不必这么做。 只要每次在数组中存储一个数字时都会增加计数器,并且计数器本身会告诉您需要存储下一个数字的索引。
使用std::vector
,那么size
方法:
std::vector v={1,2,4,8};
cout << "Vector size is: " << v.size() << "\n"
也许显示push_back()/ emplace_back()来显示OP项目可以是添加。 – drescherjm
没有显示的分数值是'1',所以你期望什么? – crashmstr
使用'std :: vecton'并检查当前的大小。 –
user0042
@crashmstr 我认为条件(分数[i] == 1)会检查该索引中是否有值。 –