cs50 pset3 tideman lock_pairs и победитель печати не работают. я не могу это исправить

#c #cs50

#c #cs50

Вопрос:

lock_pairs пропускает последнюю пару, если создается цикл, работает rest all lock_pair , а победитель печати не работает. Я не могу это исправить.

 bool check(int x, int y, int i)    //check for cycle // returns true if no cycle

{

    for (int k = i - 1; k >=0; k--)

    {

        if (pairs[i].loser == pairs[k].winner)

        {
            return false;
        }
    }
    return true;

}


// Lock pairs into the candidate graph in order, without creating cycles

void lock_pairs(void)


{

    locked[pairs[0].winner][pairs[0].loser] = true;
    locked[pairs[1].winner][pairs[1].loser] = true;

    for (int i = 2; i < pair_count; i  )
    {
        if (check(pairs[i].winner, pairs[i].loser, i) == true)
        {
            locked[pairs[i].winner][pairs[i].loser] = true;
        }
    }

    return;
}

// Print the winner of the election

void print_winner(void)
{
    // TODO

    for (int i = 0; i < pair_count; i  )
    {
        if(locked[pairs[i].winner][pairs[i].loser] == true)
        {
            if (win(i) == true)
            {
                printf("%s", candidates[pairs[i].winner]);
            }
        }
    }
    return;
}

bool win(int a)
{
    for (int j = 0; j < pair_count; j  )

    {

        if (locked[pairs[j].winner][pairs[j].loser] == true)

        {

            if (pairs[a].winner == pairs[j].loser)

            {

                return false;

            }
        }
    }
    return true; 
}
  

Комментарии:

1. 1) Форматирование вашего кода отключено, что делает его не только болезненным, но и непонятным 2) Для наборов проблем CS50 рассмотрите возможность публикации здесь , где ваш уровень знаний и специфика проблемы будут лучше известны тем, кто отвечает.

2. 3) Это не M.R.E (минимальный воспроизводимый пример). В принципе, опубликуйте наименьшее количество необходимого кода, содержащего раздел проблем и все остальное необходимое, чтобы мы могли Ctrl C amp; Ctrl V в .c файл, и он сразу же компилируется. Зачем это нужно? А) Это более продуктивно для вас, так как вы получите исправление быстрее Б) Это не только облегчает нам определение проблемы, в большинстве случаев, ожидайте спекуляций, невозможно исправить код, не относящийся к MRE.