Мой цикл For-Loop не работает, но не выводит сообщение об ошибке - что это может быть? - PullRequest
0 голосов
/ 27 марта 2019

Привет всем,

Я создаю средство проверки простых чисел как часть проекта - я использую цикл For-Loop для итерации для каждого числа, а другой - для итерации каждого числа под ним, чтобы определить, является ли оно простым. Однако ни одна из петель не работает. Я проверил это по сравнению с другими работающими For-Loops, которые я создал, и с друзьями, и ни один из них не помог вообще (извините, друзья). Буду признателен за любую помощь, и я всегда буду высоко ценить вас:)

Как я только что сказал, я проверил по другим предметам и со своими друзьями. Я также попытался запустить код внутри циклов отдельно, и код действительно работает.

#include <stdio.h>

//int FinalPrimeArray[sizeof(Primes)];
//int FinalNotPrimesArray[sizeof(NotPrimes)];

int main()
{
    //int Pos = 0;
    int Pos2 = 0;
    int i = 3;
    int k;
    int divider = 2;
    int productint;
    float productintasfloat;
    float productfloat;

    int Primes[100];
    //int NotPrimes[100];

    //Test Block (start)
    float i2 = i;
    float divider2 = divider;
    productfloat = i2 / divider2;
    printf("float type is: %f \n", productfloat);
    productint = i / divider;
    productintasfloat = productint;
    printf("integer type is: %d \n", productint);
    if(productintasfloat == productfloat)
    {
        printf("yes");
    }
    //Test Block (end)

    printf("Calculating all prime numbers in 3-100");
    for(i = 3; i == 100; i++)
    {
        printf("1");
        k = i - 1;
        for(divider = 2; divider == k; divider++)
        {
            printf("2");
            float i2 = i;
            float divider2 = divider;
            productfloat = i2 / divider2;
            printf("float type is: %f \n", productfloat);
            productint = i / divider;
            productintasfloat = productint;
            printf("integer type is: %d \n", productint);
            if(productintasfloat == productfloat)
            {
                Primes[Pos2] = i;
                Pos2++;
            }
        }
    }

    return 0;
}

Я ожидал бы, что он будет повторяться 97 раз (для первого цикла), каждая основная итерация повторяет 'i - 1' по очереди. К настоящему времени, конечно, стало ясно ... это не тот случай. При запуске я не получаю сообщений об ошибках, он печатает две строки кода из текстового блока и сообщение «3-100». Тогда ничего, ни сообщения об ошибке, ни дальнейшего вывода. Тем не менее, код завершается (символ «Стоп», серый цвет - обычно окрашен и активен при выполнении кода)

Любая помощь будет высоко ценится, и если никто не сможет помочь ... ну, я думаю, мне придется найти другой способ обойти это. Хотя я бы предпочел, чтобы любые исправления оставались близкими к моему намеченному методу (я не пытаюсь быть ChoosingBeggar), любое исправление было бы очень ценно:)

-> Budding Developer

Если я пропустил какую-либо полезную информацию и вы хотите помочь - не бойтесь спрашивать.

1 Ответ

1 голос
/ 28 марта 2019

Я думаю, что вы перепутали, как работают циклы

Цикл for будет работать до тех пор, пока условие будет истинным, пока оно не станет ложным. Вы полагаете, что цикл for будет работать до тех пор, пока условие будет ложным, пока оно не станет истинным.

То есть for(i = 3; i == 100; i++) должно быть for (i = 3; i < 100; i++)

Теперь это говорит, продолжайте инкриминировать i, пока оно меньше 100. Ваш предыдущий цикл сказал увеличение i, пока оно равно 100. Что никогда не будет

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