C ++ if утверждение, кажется, игнорирует аргумент - PullRequest
3 голосов
/ 31 мая 2011

Вот код.

bool b_div(int n_dividend)
{
    for (int iii = 10 ; iii>0 ; iii--)
    {
        int n_remainder = n_dividend%iii;
        if (n_remainder != 0)
         return false;
        if (iii = 1)
         return true;

    }
}

После тестирования этой функции, которую я сделал для программы, функция останавливается на части if (n_remainder! = 0).Теперь функция ДОЛЖНА проверить, может ли число, которое принимает функция, делиться на все числа от 10 до 1. (она принимает числа, пока не возвращает истину). Я знаю, что первое число, с которым это работает, - 2520, но даже наэтот номер останавливается на if (n_remainder! = 0).Так что я надеялся на несколько советов!У меня проблемы с устранением неполадок!Любые ссылки или слова, которые я должен искать, было бы здорово!Я все еще довольно новичок в программировании, так что любая помощь, которую вы можете оказать для обучения, будет потрясающей!Спасибо!

Ответы [ 2 ]

9 голосов
/ 31 мая 2011

Измените свой последний оператор if на:

if (iii == 1)
  return true;

В настоящее время у вас есть только один знак равенства, который устанавливает переменную iii в 1 и всегда имеет значение true. Используя двойное равенство, он сравнивает iii и 1.

3 голосов
/ 01 июня 2011

В дополнение к ответу SC Ghost, вы также можете немного улучшить свою функцию:)

bool b_div(int n_dividend) {
    for (int i = 10 ; i > 1 ; i--) {
        int n_remainder = n_dividend % i;
        if (n_remainder != 0) {
            return false;
        }
    }
    return true;
}

Несколько замечаний,

  1. модуль 1 всегда будетбыть нулевым, поэтому вам нужно только выполнить итерацию, пока i > 1
  2. , вы можете полностью удалить проверку if(i == 1) и просто всегда return true после цикла for, если цикл for не return false.Это в основном удаляет ненужную проверку.
  3. Я думаю, что более стандартно называть ваш итератор iii как i, и я предпочитаю скобки, как я их написал выше (это, конечно, полностью личное предпочтение, сделайтекак вам угодно)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...