Задача C отладка не делает правильный шаг по маршруту - PullRequest
0 голосов
/ 28 ноября 2010

Я новичок в Задаче C. Подробно я читаю о задаче c за последние три дня. Приведенный ниже метод состоит в том, чтобы генерировать простые числа до определенного упомянутого числа в соответствии с алгоритмом Seive of Erastosthenes. Я пытаюсь отладить программу, но когда-либо код приходит к строке

"if (product> size)"

следующий шаг немедленно приведет к

"для (j = 2; j <= размер; j ++)" </p>

Я не знаю, что не так с отладкой. Он переходит в разрыв, когда продукт больше, чем размер. Но когда условие ложно (product> size), почему оно не переходит к следующему, если условие то есть

if (массив [product-1]! = 1)

Нужно ли перекомпилировать код. Я использую xcode для отладки кода на Mac OS X 10.x


@ interface SeiveofErastosthenes: NSObject {

int* array;
int size;

}

- (SeiveofErastosthenes *) initMe: (int) ssize; - (void) РассчитатьPrimeNumbers; - (недействительно) печать;

@ конец

- (void) РассчитатьPrimeNumbers { int product = 0; int i = 0; int j;

memset(array,0,size);
array[0]=0;
array[1]=2;

for(i = 1 ; i < size ; i++)
{
    if(array[i] == 1)
        continue;

    array[i] = i+1;

    for(j = 2; j <= size ; j++ )
    {

        product = (i+1) * j;

        if(product  > size)
        {
            break;
        }

        if(array[product-1] != 1)
        {
            array[product] == 1;
        }
    }
}

}

Ответы [ 3 ]

0 голосов
/ 28 ноября 2010

Убедитесь, что 'Загрузка символов лениво' не отмечена в настройках XCode -> отладка.Иногда это может нанести ущерб.

0 голосов
/ 28 ноября 2010

Проекты XCode настроены с оптимизацией -Os (оптимизация по скорости и пространству) по умолчанию, для и сборок Debug и Release, причудливо.Этот вид оптимизации затруднит отладку, так как код может быть переупорядочен для повышения производительности.Проверьте настройки проекта и цели для конфигурации «Отладка» и убедитесь, что для Optimization Level установлено значение «Нет».

0 голосов
/ 28 ноября 2010

Хорошо, ребята, я понял проблему Objective C отладчик отстой

В моей программе

if (array [product-1]! = 1) {

 array[product] == 1;

}

Он не выполняет инструкцию, если в этом нет необходимости

"array [product] == ​​1;" это неправильно согласно алгоритму, но это все еще действительный код

Это допустимый оператор в соответствии с c, и он должен выполнить его, а возвращаемое значение является логическим значением true или false. Объект C просто игнорирует его и переходит к следующему циклу. Он настолько интеллектуален, что даже не проверяет условие if (массив [product]! = 1)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...