无法进行循环

时间:2011-11-24 03:11:12

标签: c sorting loops

我正在编写一个程序,对家庭的客人名单进行排序,除了一部分外,我的一切工作正常。每个家庭都有一个优先号码,以及家庭中参加聚会的人数。但是,如果只能邀请优先级别的某些家庭而不是所有家庭,则会跳过整个优先级,并立即停止填写访客列表。我在尝试将逻辑放入代码时遇到了一些麻烦。

这是我的功能代码:

Check_Capacity(int FAMILIES_KNOWN, int CAPACITY, int Family_Members[], int Priority[])
{
    int i, num_families = 0, num_guests = 0, count = 0;

    for(i = 0; i < FAMILIES_KNOWN; i++)
    {
        count++;

        while(Priority[i] == count)
        {
            num_guests += Family_Members[i];

            if(num_guests <= CAPACITY)
            {
                num_families++;
            }

            else
            {
                break;
            }
        }
    }
    return num_families;
}

此代码导致7个家庭参加聚会,24个家庭成员。它应该是8个家庭和26个家庭成员。我很兴奋,因为我以为我已经完成了这个项目,但后来我们的老师补充说,我们必须确保优先级被视为“整体”。

在这种情况下,FAMILIES_KNOWN为10,CAPACITY为30.以下是访客列表:

BEN JOHNSON 4 2
DOUG ESPINOSA 3 2
SARAH TELLINGER 5 3
GRANT THOMPSON 5 2
JENNIFER WEST 7 6
JACKSON JOHNSON 1 5
MARTY MCFLY 4 1
ELIZABETH JAMES 2 6
MICKEY MOUSE 2 4
RAJ SHAH 2 5

第一个数字是家庭成员的数量,第二个数字是优先级别。假设我已经按优先级对列表进行了排序。有人有主意吗?如果你不明白我想做什么,我可以更深入地解释。

1 个答案:

答案 0 :(得分:1)

您的问题是您的内部while循环不会增加索引,因此您只添加第一个优先级系列1中的与会者。由于您按优先级对列表进行排序,因此您需要执行增量操作在i循环中while,而不是仅在for循环中。请注意,因为这可能会干扰i循环中for的增量。