我正在编写一个函数,在数组中找到两个相同的元素,然后打印其索引的值。我似乎无法获得正确的第二个索引。我的问题是什么?
代码:
我被称为“coupleSearch”'然后它返回它 值为' printCouples' .line 139
=IIF( COUNT(IIF(Fields!MyFieldName.Value="True", 1, Nothing)) > 0
, COUNT(IIF(Fields!MyFieldName.Value="True", 1, Nothing))
, "")
感谢。
答案 0 :(得分:0)
您的测试假定年龄数组中有两个条目。也就是说,寻找朋友的客人的年龄不是唯一的,并且数组已经被排序。传入的数组未按年龄排序。因此,大小+ 2将不包含与大小+ 1相同的年龄。
首先对年龄数组进行排序,然后在数组中搜索该年龄的第一个和最后一个条目。
如果您不想对数组进行排序,那么您必须测试数组中的每个条目并跟踪匹配的索引。
一旦找到第一场比赛,你也会退出coupleSearch()。如果您不想排序并搜索第一个和最后一个匹配,则需要单独搜索第二个匹配。
由于您打印的尺寸为+ 1,因此您打印的答案是基于答案的。
答案 1 :(得分:0)
您只搜索第一场比赛。换句话说 - 你永远不会寻找一对夫妻。
也许你应该尝试类似的东西:
void printCouples(int size, int condition2, int ageFriend)
{
int j = size+1; // Start after the first match
int found = 0;
while (j < NUM_GUESTS )
{
if (ageFriend == guestAges[j])
{
found = 1;
printf("Two guest with age %d at index %d and index %d\n", ageFriend, size, j);
}
}
if (!found)
{
printf("No guest this age.\n");
}
}
请注意,condition2
已不再使用。