Какое условие я должен использовать, чтобы мой код работал с локальной переменной? - PullRequest
0 голосов
/ 10 ноября 2018

Так что этот код дает нам простые числа. Но это работает только в том случае, если int a[1499] является глобальной переменной, потому что, если массив является глобальным, он автоматически инициализирует все члены 0. Как я могу изменить условие for -петля, чтобы я мог сделать a[1499] локальной переменной и переместить ее в функцию main?

#include <iostream>

using namespace std;

int a[1499];

int main()
{
    int PrimeCounter = 0;
    int PrimeNumberNeeded = 1500;
    bool Isprime;
    int TestNumber = 2;

    a[0]=2;
    while (PrimeCounter != PrimeNumberNeeded)
    {
        Isprime = true;

        for(int x=0; a[x]!= 0; x++)
        {
            if(TestNumber%a[x] == 0)
            {
                Isprime = false;
                break;
            }
        }
        if (Isprime)
        {
            a[PrimeCounter] = TestNumber;
            PrimeCounter++;
        }
        TestNumber++;
    }
    // end of while
    if (PrimeCounter == PrimeNumberNeeded)
    {
        cout << "Prime counter is: " << PrimeCounter << "\nTest number is: "<< a[1499]<< endl;
    }
    return 0;
}

1 Ответ

0 голосов
/ 10 ноября 2018

Переместите определение a внутри функции и присвойте ей инициализатор:

int a[1499] = {0};

Это явно инициализирует первый элемент равным 0, а также неявно инициализирует остальное равным 0.

...