Форум программистов, компьютерный форум CyberForum.ru

массивы через вектор - C++

Восстановить пароль Регистрация
 
skaska100
0 / 0 / 0
Регистрация: 16.10.2010
Сообщений: 69
25.02.2011, 21:15     массивы через вектор #1
знаю что эти задачи разбирались на форуме,но мне нужно что бы через вектр было сделано.спасибо

1.найти произведение элементов массива с четными номерами
2.найти сумму элементов массива расположеных между первым и последним нулевыми элементами
преобразовать массив таким образом что бы сначало располагались все положительные а потом все отрицательные(элементы равны 0 считать положительными)
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
talis
 Аватар для talis
789 / 541 / 37
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
25.02.2011, 21:38     массивы через вектор #2
Работа с векторами точно такая же, как и с массивами. Разница в том, что можно динамически добавлять и удалять элементы.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include <iostream>
#include <vector>
#include <conio.h> // для getch()
 
using namespace std;
 
int main(int argc, char *argv[])
{
    // создание вектора int из 15 элементов
    std::vector<int> vec( 15 );
    
    // заполнение существующих элементов как у обычного массива
    for( int i = 0; i < 15; i++ )
       vec[i] = i;
    
    // добавление элементов в конец
    vec.push_back( 404 );
    vec.push_back( 510 );
    
    // удаление пятого элемента
    std::vector<int>::iterator it = vec.begin();
    for( int i = 0; i < 5; i++ )
       it++;
    vec.erase( it );
    
    // вывод элементов
    for( int i = 0; i < 16; i++ )
       cout << vec[i] << "; ";
    
    cout << endl;
    
    // можно так:
    for( it = vec.begin(); it != vec.end(); it++ )
       cout << *it << "; ";
              
    getch();
    
    return 0;
}
igorrr37
 Аватар для igorrr37
1593 / 1221 / 118
Регистрация: 21.12.2010
Сообщений: 1,868
Записей в блоге: 7
25.02.2011, 23:12     массивы через вектор #3
преобразовать массив таким образом что бы сначало располагались все положительные а потом все отрицательные(элементы равны 0 считать положительными)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include<iostream>
#include<vector>
#include<algorithm>
#include<iterator>
 
int main(){
    std::vector<int>con{5,-7,0,0,-6,-6,18,42,42,-1};
    std::sort(con.begin(), con.end(), [](int a, int b){
        if(a>=0&&b<0) return true;
        else return false;
    });
    std::copy(con.begin(), con.end(), std::ostream_iterator<int>(std::cout, "  "));
}
fasked
Эксперт C++
 Аватар для fasked
4925 / 2505 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
25.02.2011, 23:41     массивы через вектор #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от skaska100 Посмотреть сообщение
произведение элементов массива с четными номерами
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include <vector>
#include <numeric>
#include <iostream>
#include <iterator>
#include <algorithm>
#include <functional>
 
int random()
{
    return std::rand() % 10 + 1;
}
 
template<typename _InIt, typename _Ty, typename _Func1, typename _Func2>
_Ty accumulate_if(_InIt _First, _InIt _Last, _Ty _Val, _Func1 F1, _Func2 F2){
        for(; _First != _Last; ++_First)
                if( F2(*_First) )
                        _Val = F1(_Val, *_First); 
        return _Val;
}
 
int main()
{
    std::vector<int> v (10);
    std::generate(v.begin(), v.end(), random);
    
    std::copy(v.begin(), v.end(), std::ostream_iterator<int>(std::cout, " "));
    std::cout << std::endl
              << "The product of all elements in vector is: " 
              << accumulate_if(v.begin(), v.end(), 1, std::multiplies<int>(), std::not1(std::bind2nd(std::modulus<int>(), 2)))
              << std::endl;
 
    return 0;
}
Yandex
Объявления
25.02.2011, 23:41     массивы через вектор
Ответ Создать тему
Опции темы

Текущее время: 01:44. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru