如何打印数组中相同元素的下一个索引

时间:2017-01-11 20:15:26

标签: c

我正在编写一个函数,在数组中找到两个相同的元素,然后打印其索引的值。我似乎无法获得正确的第二个索引。我的问题是什么?

代码:

  

我被称为“coupleSearch”'然后它返回它   值为' printCouples' .line 139

=IIF( COUNT(IIF(Fields!MyFieldName.Value="True", 1, Nothing)) > 0
    , COUNT(IIF(Fields!MyFieldName.Value="True", 1, Nothing))
    , "")

感谢。

2 个答案:

答案 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已不再使用。