Из одного массива выбрать элементы, которые войдут в другой массив

Тема в разделе "Общие вопросы по С и С++", создана пользователем Masters, 18 фев 2009.

Статус темы:
Закрыта.
  1. Masters

    Masters Гость

    Код (Text):
    double arr1[9] = {2,4,1,6,4,8,9,2,7};
    for (int i=0;i<9;i++)
    {
    if (arr1[i] > 5)
    {

    //?????

    }
    }
    Помогите, есть массив arr1 из девяти элементов, нужно из него выкинуть все значение меньше 5, и сформировать новый массив arr2 из оставшихся чисел. Размерность нового массива неизвестна.
     
  2. ZZmiy

    ZZmiy Гость

    Как вариант - сделать это в два прохода - вначале посчитать количество таких элементов, затем выделить нужное количество памяти и сформировать массив
    Или использовать стандартные контейнеры :(
     
  3. Mashusik

    Mashusik Гость

    Тут нужно сформировать цикл, который будет проверять каждый элемент массива arr1 и заодно создавать новый массив с уже отобранными числами, сдесь же вводишь переменную, которая будет подсчитывать колличесво элементов нового массива. И все! Все очень просто!
     
  4. Masters

    Masters Гость

    Код (Text):
    #include <iostream>
    #include <vector>
    int main ()
    {
    int z=0;
    std::vector<int> arr2(z);

    double arr1[9] = {2,4,1,6,4,8,9,2,7};
    for (int i=0;i<9;i++)
    {
    if (arr1[i] > 5)
    {
    arr2.resize(z+1);
    arr2[z] = arr1[i];
    std::cout << arr2[z]<<"\n";
    z++;
    }
    }
    std::cout << "size of arr2: "<<arr2.size();
    }
    Нагуглил вот так, вроде проще и строк меньше, совет в 2 прохода тоже не плох.
    > заодно создавать новый массив с уже отобранными числами
    Нельзя создать массив если не известна его размерность.
     
  5. alexsid

    alexsid Гость

    ишо меньше строк,
    ишо проще

    Код (Text):
    #include <vector>
    #include <iostream>
    #include <algorithm>
    #include <iterator>


    void main(){
    double arr1[9] = {2,4,1,6,4,8,9,2,7}

    std::vector<double> result;
    std::copy_if (arr1, arr1 + 9, std::back_inserter(result), std::bind2nd (std::greater<int>(),5));
    std::copy(result.begin(), result.end(), std::ostreambuf_iterator<double>(std::cout));
    }
    да че там
    Код (Text):
    #include <iostream>
    #include <algorithm>
    #include <iterator>

    void main()
    {
    std::copy_if (std::istream_iterator<double>(std::cin),       // копируем пользовательский ввод (массив вещ.чисел через пробел)
    std::istream_iterator<double>(),                     // весь ввод (всю строку шо ввели)
    std::ostream_iterator<double>(std::cout, ","), // на экран (через зпт)
    std::bind2nd (std::greater<int>(),5) );         // тока если елементы больше 5
    }
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей