#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.