0 / 0 / 0
Регистрация: 07.06.2017
Сообщений: 22
1

Вычислить среднеарифметическое нечётных элементов массива (std::vector)

07.10.2018, 21:08. Показов 1827. Ответов 8
Метки нет (Все метки)

Дан одномерный массив (вектор), состоящий из N целочисленных элементов.

14.1. Заполнить массив случайными числами.

14.2. Найти максимальный элемент.

14.3. Вычислить среднеарифметическое нечетных элементов массива.

14.4. Вывести отрицательные элементы на экран.

Не понимаю как работать с этими векторами.
То, что мне удалось сделать:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
 vector<int> v;
 int N;
 cin>>N;
 srand(time(0));
 for(int i=0;i<N;i++)
     v.push_back(rand()%10);
 vector<int>::iterator beg=v.begin();
 vector<int>::iterator end=v.end();
 while(beg!=end)
     cout<< *(beg++)<<' ';
 cout<<endl;
 
 int max = *max_element(v.begin(), v.end());
 cout<<max;
 
 return 0;
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.10.2018, 21:08
Ответы с готовыми решениями:

Вычислить среднеарифметическое нечетных элементов массива
Дан одномерный массив, состоящий из N целочисленных элементов. Заполнить массив случайными...

На основе исходного std::vector<std::string> содержащего числа, создать std::vector<int> с этими же числами
подскажите есть вот такая задача. Есть список . Создать второй список, в котором будут все эти же...

Как передать целочисленную матрицу типа std::vector<std::vector<int> > в функцию?
Здравствуйте. Почитал на форуме, но так и не понял что я делаю не так. Имеется двумерный вектор....

Вычислить среднеарифметическое положительных элементов массива
1.Дан одномерный массив, состоящий из N вещественных элементов. 1.1.Ввести массив с клавиатуры....

8
7422 / 5017 / 2890
Регистрация: 18.12.2017
Сообщений: 15,694
08.10.2018, 00:57 2
AserFaker, это разные задачи или одна ? если разные, оформите каждую отдельной темой.

рандомное заполнение вектора и вывод на экран (один из способов):

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <vector>
#include <ctime>
 
int main()
{
    srand((int)time(0));
    int N;
    std::vector<int>v; 
    std::cout <<"N="; std::cin >>N;
 
    std::cout <<"My vector:\n";
    for (int i = 0; i<N ; i++)
    {
      v.push_back(rand()%19 - 9);      
      std::cout <<v.at(i)<<" ";          
    }   
    
system("pause");
return 0;
}
0
165 / 108 / 57
Регистрация: 30.08.2018
Сообщений: 357
08.10.2018, 00:59 3
Цитата Сообщение от AserFaker Посмотреть сообщение
Не понимаю как работать с этими векторами.
так сделайте всё как с обычным массивом.
0
1718 / 567 / 187
Регистрация: 12.03.2016
Сообщений: 2,169
08.10.2018, 06:37 4
Лучший ответ Сообщение было отмечено sourcerer как решение

Решение

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
40
#include <iostream>
#include <vector>
#include <algorithm>
#include <random>
#include <iterator>
#include <numeric>
 
int main()
{
    std::size_t n;
    std::cout << " Input n = ";
    std::cin >> n;
    std::vector <int> v(n);
 
    std::mt19937 gen{ std::random_device()() };
    std::uniform_int_distribution <> dist(-100, 100);
 
    std::generate(begin(v), end(v), [&dist, &gen] {return dist(gen); });
 
    for (const auto & el : v)
        std::cout << el << "   ";
 
    auto maxEl{ *max_element(begin(v), end(v)) };
    std::cout << " \n max = " << maxEl << '\n';
 
    std::size_t i{};
 
    auto summ{ std::accumulate(begin(v), end(v), 0, [&i](const auto & x, const auto & y)
    {return y & 1 ? i++, x + y : x; }) };
 
    if (i == 0)
        std::cout << "No odd elements\n";
    else {
        auto SrAr{ static_cast<double>(summ) / i };
        std::cout << " SrAr = " << SrAr << '\n';
    }
 
    for (const auto & el : v)
        if (el < 0) std::cout << el << "   ";
}
0
265 / 80 / 18
Регистрация: 05.04.2018
Сообщений: 1,082
Записей в блоге: 1
08.10.2018, 08:51 5
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
#include <iostream>
#include <ctime>
#include <vector>
 
using namespace std;
 
int main()
{
    srand(time(NULL));
    int maxEl = 0, sum = 0, j = 0, N, arithMean;
    cin >> N;
    vector<int> vec(N);
    
    for(int i(0); i < vec.size(); ++i) {        //заполнили случайными числами
        vec[i] = -100 + rand() % 99;
    }
    
    for (int i(0); i < vec.size(); ++i)         
    {
        if(vec[i] > maxEl) {                    //нашли максимальный элемент
            maxEl = vec[i];
        }
        
        else if(vec[i] % 2 == 1) {                  //накапливаем сумму нечетных
            sum += vec[i];
            ++j;
        }
        
        else if(vec[i] < 0) {
            cout << vec[i] << " | ";            //выводим отриц в консоль
        }
    }
    
    arithMean = sum / j;                        //среднеарифм-е нечетных
    
    return 0;
}
0
1718 / 567 / 187
Регистрация: 12.03.2016
Сообщений: 2,169
08.10.2018, 19:25 6
Джон Кофи, исправляй давай, не оставлять же это как решение.
0
265 / 80 / 18
Регистрация: 05.04.2018
Сообщений: 1,082
Записей в блоге: 1
08.10.2018, 20:45 7
Цитата Сообщение от Manowar Посмотреть сообщение
исправляй давай, не оставлять же это как решение.
я почти сразу сообразил, но уже нельзя было редактировать) да и у меня сегодня др, не до этого)
0
1718 / 567 / 187
Регистрация: 12.03.2016
Сообщений: 2,169
08.10.2018, 20:47 8
Да выложи потом просто правильное решение и все.
0
265 / 80 / 18
Регистрация: 05.04.2018
Сообщений: 1,082
Записей в блоге: 1
09.10.2018, 09:19 9
Цитата Сообщение от Manowar Посмотреть сообщение
Да выложи потом просто правильное решение и все.
на ноль не делим, дабл для среднеарифметического и добавил условие по отрицательным нечетным, писал на скорую руку без компилятора.
Тут работает:
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
40
41
42
43
44
#include <iostream>
#include <ctime>
#include <vector>
 
using namespace std;
 
int main()
{
    srand(time(NULL));
    int maxEl = 0, j = 0, N;
    double arithMean = 0, sum = 0;
    cin >> N;
    vector<int> vec(N);
    
    for(int i(0); i < vec.size(); ++i) {        //заполнили случайными числами
        vec[i] = -100 + rand() % 200;
    }
    
    for (int i(0); i < vec.size(); ++i)         
    {
        if(vec[i] > maxEl) {                    //нашли максимальный элемент
            maxEl = vec[i];
        }
        
        else if(vec[i] % 2 == 1 || vec[i] % 2 == -1) {  //накапливаем сумму нечетных
            sum += vec[i];
            ++j;
        }
        
        else if(vec[i] < 0) {
            cout << vec[i] << " | ";            //выводим отриц в консоль
        }
    }
    
    if(j != 0) {
        arithMean = sum / j;                    //среднеарифметическое нечетных
        cout << "\narithMean: " << arithMean;
    }
    else {
        cout << "\nNo odd numbers";
    }
    
    return 0;
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.10.2018, 09:19
Помогаю со студенческими работами здесь

Вычислить среднеарифметическое значение положительных элементов массива
Вычислить среднеарифметическое значение положительных элементов массива.

Вывести значения std::vector<std::vector<int*> >
Подскажите, как вывести значения? const size_t row = 3; const size_t col = 3;...

Как изменять размер std::vector<std::vector>?
Здравствуйте, как нужно изменять размер std::vector&lt;std::vector&gt; например: ...

Std::vector<std::pair<std::vector<int>::iterator, std::vector<int>::iterator>
Вопрос по вектору. Допустим есть вектор, std::vector&lt;int&gt; vec; на каком - то этапе заполнения я...

Удаление элементов из std::vector
У меня есть класс Zone. Но объявлен как массив vector в другом классе. class World { public:...

Ошибка: E2034 Cannot convert 'int' to 'std::vector<std::vector<TRabbitCell,std::allocator<TRabbitCell>>...
Есть двухмерный вектор: std::vector&lt;std::vector&lt;TRabbitCell&gt; &gt; *cells(5, 10); Пытаюсь...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru