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

Так что этот код дает нам простые числа. Но это работает только если 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

Решение

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

int a[1499] = {0};

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

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]