2017-02-14 3 views
-6

В настоящее время я создаю программу, которая инициализирует int Vector в начале программы. По мере продвижения программы в вектор будут добавлены простые числа. Затем программа проверяет, является ли результат результата, если результат заданного числа% первого числа в векторе == 0. Если нет, программа затем проверит его против второго числа. Есть ли способ сделать это на C++ 11, и если да, то как? Спасибо за любое время!Как систематически использовать каждый элемент в векторе

+0

Что вы попробовали? – user463035818

+5

Основной язык между программистами - это КОД, а не история. Покажите свою попытку. –

+0

У меня нет попытки, потому что я не знаю, как это сделать. – SteveyMcGinins

ответ

0

Во-первых, вам нужно будет нажимать ваши простые числа в векторе. В начале, если вы не попросите иначе, вектор пуст. Вы можете нажать простое число с помощью этого фрагмента:

// somewhere you declare your vector 
std::vector<unsigned long long> primes; 

// code computing a prime number 
unsigned long long prime; 
.... 

// Push the new prime number at the end of the vector 
primes.push_back(prime); 

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

for(auto prime : primes) { 
    . . . // code using the prime number 
} 

По предложению комментариев, вы можете захотеть использовать эту for петлю для того, чтобы проверить простоты числа. Вы легко можете сделать это с петлей for:

unsigned long long number = ...; // the number to test 
bool is_prime = true; 
for(auto prime: primes) { 
    bool is_divisible = (0 == number % prime) 
    is_prime = is_prime && !is_divisible; 
    if(! is_prime) 
     break; 
} 
// then push it in primes if it is prime 
if(is_prime) 
    primes.push_back(number); 

Пожалуйста, перейдите по ссылке предоставленной @ tobi303, который является очень хорошим ресурсом на C++.

C++ нелегко для новичков, но если вы вешаете, это полезно.

+0

Спасибо вам большое! – SteveyMcGinins

+0

Я так понимаю: задайте заданное число против всех чисел в векторе, если он не может быть погружен ни одним из чисел в векторе, тогда он является простым и должен быть добавлен к вектору. Ну, последняя часть явно не упоминается, но если это так, то диапазон, основанный на цикле, не поможет – user463035818

+1

@ Javalover, что вы можете разработать приложение, которое не зависит от стороннего программного обеспечения и, возможно, переносимо? (C# не переносится, java ... kinda есть, но не переносится с версии на версию) .RUST сопоставим, но поддержки платформ не хватает. C++ получил открытый стандарт, совместимая с ним программа гарантированно работает на _any hardware_, если компилятор соответствует стандарту – Swift

1

Вот пример кода (C++ 11) с lambdas и std :: find_if, который покажет вам, как найти четные числа в векторе. Вы можете использовать аналогичные методы для поиска нечетных чисел, простых чисел и т. Д.

#include <iostream> 
#include <vector> 
#include <algorithm> 

int main() 
{ 
    std::vector<int> myVector; 
    myVector.emplace_back(5); 
    myVector.emplace_back(3); 
    myVector.emplace_back(4); 

    std::vector<int>::iterator it = std::find_if(myVector.begin(), myVector.end(), [](int const& elem) 
     { return elem % 2 == 0; }); 

    if (it != myVector.end()) 
     std::cout << "My even number is: " << (*it) << std::endl; 
    else 
     std::cout << "No even numbers in vector!"<< std::endl; 

    system("PAUSE"); 
    return 0; 
} 
Смежные вопросы